我真的很难与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,它会返回帐户的视图。