表单认证和授权MVC 4
我正在尝试创建一个匿名控制器以获得表单身份验证。 我使用匿名和表单身份验证启用了我的IIS 7,并将我的web.config设置为拒绝匿名用户。 在登录控制器上,我将[AllowAnonymous]装饰放在我的控制器上(和我的操作)。
我可以在这组配置上获得的唯一操作是登录操作(它返回“登录”视图),并且我猜测MVC允许我获取此操作,因为我将它设置为我的Web上的登录URL的.config。
这是我的网络配置配置:
<authentication mode="Forms">
<forms loginUrl="~/Login/Login" timeout="2880" />
</authentication>
所有其他操作都重定向到登录操作。 在这组配置中,我无法实现恢复密码,注册等其他重要操作。
我究竟做错了什么?
在web.config中使用自定义行为而不是授权配置的全局认证过滤器(适用于MVC)
添加全局过滤器
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new AuthorizeAttribute());
}
}
然后,[AllowAnonymous]将起作用,所有其他控制器和操作都需要授权。
您还可以在RegisterGlobalFilters
方法中注册Authorize
过滤器:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new AuthorizeAttribute());
}
然后在需要匿名访问的操作方法上使用AllowAnonymous
属性:
[Authorize]
public class AccountController : Controller
{
[AllowAnonymous]
public ActionResult RecoverPassword()
{
...
}
}
有两种可能的方法。
首先 - 您可以使用Authorize属性全局拒绝匿名请求,并用AllowAnonymous属性(这是MVC4的新属性)标记这些不需要授权的项目。
其次 - 不要全局否认,而要确保所选控制器/操作具有Authorize属性。
链接地址: http://www.djcxy.com/p/42095.html