如何使用AuthorizeAttribute修复Asp.NET身份登录的无限循环?

时间:2014-06-24 16:51:55

标签: .net asp.net-mvc iis asp.net-identity

我正在尝试设置Asp.NET Identity,它似乎设置正确,但是当我将[Authorize]属性放在我的BaseController类上时,我得到一个无限循环重定向到登录页面。有人能帮助我吗?

注意:每个Controller(包括AccountController)都继承自BaseController。另外,我使用的是.NET 4.5和.NET MVC5。

1 个答案:

答案 0 :(得分:2)

尝试在登录/注册操作中设置[AllowAnonymous] attribute,因此您的代码如下所示:

[Authorize]
public class BaseController: Controller
{
    ...
}

public class AccountController: BaseController
{

    [AllowAnonymous]
    public ActionResult Login() {
        ...
    }

    [AllowAnonymous]
    [HttpPost]
    public ActionResult Login(LoginModel model, string returnUrl) {
        ...
    }

    [AllowAnonymous]
    public ActionResult Register() {
        ...
    }

    [AllowAnonymous]
    [HttpPost]
    public ActionResult Register(RegisterModel model) {
        ...
    }

    ...
}

由于您已将[Authorize]属性添加到基本控制器,因此每个操作都需要对用户进行身份验证(包括“登录”操作)。但是,为了使用户能够对自己进行身份验证,至少应为匿名用户启用一些操作,如“登录”操作。这就是使用[AllowAnonymous]属性实现的目标。

希望它有所帮助!