日期:2014-05-17  浏览次数:20451 次

Mvc使用iframe框架的问题
如何防止用户直接输入iframe的地址打开子页面?如果输入了应该怎样处理?
asp.net?MVC

------解决方案--------------------
用户如果知道<iframe>地址的话,在地址栏输入,是没有办法禁止的。
开发的时候,<iframe>的src后头再加上个随机数,根据这个随机数来判断是否可以打开。。试试看哦。
------解决方案--------------------
引用:
如果输入了应该怎样处理?


正常地业务处理呗。比如说在一个“销售订单”页面中嵌入了一个“库存成本稽查”页面,而这个页面跟iframe上面(外面)的页面(订单)有关联,那么你应该使用一个关联的id来标识。例如外边的页面在刚刚打开时其url是
     http://www.site.com/abc/page1.aspx?id=234adf234
那么内部iframe的src就是
    http://www.site.com/abc/page201.aspx?id=234adf234
通过参数,那么每一个页面独立地处理和验证权限,互不干扰。
------解决方案--------------------
如果你要判断用户是否登录之类的,那么每一个页面都应该判断。不管它是在外边,还是在iframe内部。

我知道弄一个“随机数”是要干什么。

具体要弄什么参数,是要看有什么具体意义。没有意义的参数就没有必要。这来自于设计,看你能够讲出业务逻辑需求,而不是随便无厘头地抄一个(别人这么写过,所以你也这么写)。


------解决方案--------------------
引用:
引用
如果你要判断用户是否登录之类的,那么每一个页面都应该判断。不管它是在外边,还是在iframe内部。


就是因为在每个页面都判断比较麻烦,有那么多页面,都写一遍,不是很冗余吗?我也想过用过滤器,在页面呈现之前验证,可以给basecontroller加上这个过滤器的特性,然后被各个控制器继承。但是有些页面是不需要验证的


你可以在过滤器里面判断一下当前controller是否需要验证~~
if (filterContext.Controller is XXXController)
{
...
}