我做了我自己的授權屬性,而這也正是它看起來像用戶沒有定製的授權屬性認證
public class RedirectAuthorize : AuthorizeAttribute
{
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
{
filterContext.Result = new RedirectToRouteResult(new
RouteValueDictionary(new { controller = "NotExist" }));
}
}
}
因此,如果用戶沒有通過驗證,我希望他們重定向到NotExist
控制器。我調試過了,似乎未經授權的用戶可以進入if子句,這是正確的。但我也嘗試過使用登錄用戶來做這件事,並且他們也得到了if子句,這也是錯誤的。
我不明白爲什麼會發生這種情況。這讓我猶豫是否登錄無效。這是登錄用戶的正確方式嗎?
FormsAuthentication.SetAuthCookie(acc.username, false);
我從來沒有在asp.net mvc中做過登錄系統,所以請告訴我我做錯了什麼。
編輯:
似乎默認的[授權]屬性不工作要麼...我真的覺得在日誌中的問題奠定了在:
[HttpPost]
public ActionResult Login(User acc)
{
if(ModelState.IsValid)
{
if (Validate(acc.username, acc.password))
{
FormsAuthentication.SetAuthCookie(acc.username, false);
return RedirectToAction("Index", "System");
}
}
ModelState.AddModelError("IncorrectDetails", "Wrong details. Please try again.");
return View(acc);
}
我也有這個問題:當你被授權時你是否應該進入HandleUnauthorizedRequest()? – user1534664