在ASP.NET MVC Html错误401中授权属性unaithorized

时间:2015-10-30 00:06:25

标签: c# asp.net-mvc attributes authorize

我真的很难与Authorize合作;检查注册用户的用户名和密码后,应将用户重定向到帐户页面。在帐户控制器中,我使用授权属性如下:

    [Authorize]
    public ActionResult Index(string returnUrl)
    {
        ViewBag.ReturnUrl = returnUrl;
        return View();
    }

问题是,如果我编译代码并尝试使用正确的用户名和密码登录,我将收到HTML 401未经授权的错误,这很奇怪!。

我试着读一下这个,在Jon Galloway的一本名为Professional ASP.NET MVC 5的书中,他解释说在使用[授权]时也应该编辑Web.config(我不知道我是否正确!)。所以我尝试编辑Web.config如下:

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

现在,我不再收到错误,但是当我更改网址时,我能够看到帐户页面而不登录这是不好的,这意味着[授权]属性不起作用。

我知道授权与角色和用户一起使用,我可以编写例如[Authorize(Uers =“blabla”)],但是在我的应用程序中,所有在EF DB中注册的用户都可以看到帐户页面。 任何人都可以帮我解决这个问题请:)?

这里有我登录表格的代码

[HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public ActionResult Login(LoginViewModels lgm)
    {
        if (ModelState.IsValid)
        {
            // Check if username exist
            var dbUser = db.RegisterTables.FirstOrDefault(x => x.tUserName.ToLower().Equals(lgm.username));

            if (dbUser != null)
            {
                if (Security.IsCorrectPassword(lgm.password, dbUser))
                {
                    FormsAuthentication.SetAuthCookie(lgm.username, true);
                    return RedirectToAction("Index", "Account");
                }
                else ModelState.AddModelError("", "Check user or pass.");
            }
            else ModelState.AddModelError("", "Check user or pass.");
        }
        return View(lgm);
    }

/ Account / Index的代码只是一个正常的ActionResult,它会返回帐户的视图。

0 个答案:

没有答案