表单认证和授权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

上一篇: Forms Authentication & authorization MVC 4

下一篇: Partial ASP.NET MVC View submit