公共的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默认权限详细