公共的Controler,是给非授权的用户访问

issue:

我使用的环境是Vs2012 , 创建了MVC4的工程,然后在工程里面Webconfig, 添加了访问限制

    <authentication mode="Forms">       <forms loginUrl="~/Account/Login" timeout="2880" />     </authentication>

    <authorization>       <deny users="?" />       <allow users="*" />     </authorization>

设置所有访问都拒绝匿名访问,只有授权用户才能访问,非授权的访问会跳转到登录页面 ~/Account/Login 

然后问题是,我想加一个公共的Controler,是给非授权的用户访问,我给那个Controler加上

[AllowAnonymous] 属性,允许匿名,但是很奇怪,所有访问这个匿名的Controler还是会跳转到Login,除非你登录了授权,才可以打开这个匿名的控制器,这个[AllowAnonymous]完全不起作用。

solution:

在BaseControler里面加一个[Authorize],所有要验证的页面都继承BaseControler, 不需要验证的就不继承。然后将WebConfig的权限控制限制去掉。

备注:

  使用AllowAnonymous属性是用来跳过授权的 Authorize attribute 执行。标有使用AllowAnonymous操作方法始终可以访问所有用户,包括匿名用户。一般下面这三个特性是伴随着使用的:    

        AuthorizeAttribute:表示一个特性,该特性用于限制调用方对操作方法的访问。

        AllowAnonymousAttribute表示一个特性,该特性用于标记在授权期间要跳过 AuthorizeAttribute 的控制器和操作。

        InitializeSimpleMembershipAttribute:这个特性是来初始化数据库成员关系的,后面会讲到。

        请查看这个链接了解详细信息:  Asp.net Mvc4默认权限详细

posted @ 2014-03-18 11:13  happyu0223  阅读(320)  评论(0编辑  收藏  举报