401 即使在 FormsAuthentication.SetAuthCookie() 之后仍未授权
401 Unauthorize even after FormsAuthentication.SetAuthCookie()
我正在尝试使用基本表单身份验证实现 ASP.NET MVC5 应用程序。
于是就有了我的登录方式:
[HttpPost]
[AllowAnonymous]
public ActionResult Login(string email, string password, bool? rememberMe)
{
if (email.IsNullOrWhiteSpace() || password.IsNullOrWhiteSpace())
{
return RedirectToAction("Index");
}
UserEntity user = new UserEntity() {Email = email, PasswordHash = password};
var userFromDb = _userService.FindUser(user);
if (userFromDb != null)
{
FormsAuthentication.SetAuthCookie(userFromDb.Name, rememberMe.GetValueOrDefault());
var a = HttpContext.User.Identity.IsAuthenticated; //This is still false for some reson
return RedirectToAction("Index", "User");
}
return RedirectToAction("Index");
}
但是在这个重定向方法之后,它给了我 401 Unauthorized
错误。
也好像 HttpContext.User.Identity.IsAuthenticated 是假的。
您是否知道 idea/suggestions 为什么会这样以及如何解决?
UPD:我还有一行来自 auth 的 webconfig 概念,所以这不是原因
<authentication mode="Forms">
<forms loginUrl="~/Login/Index" />
</authentication>
地点
<authentication mode="Forms" />
进入 <system.web>
内的 web.config 文件,以触发其效果。
找到原因了。由于某种原因,在我的 webconfig 中有一行抑制了 FormsAuthentication
module
<system.webServer>
<modules>
<remove name="FormsAuthentication" />
</modules>
</system.webServer>
所以这一行 FormsAuthentiction
不起作用,但如果我们将其注释掉或删除,一切都会按预期工作。
我正在尝试使用基本表单身份验证实现 ASP.NET MVC5 应用程序。 于是就有了我的登录方式:
[HttpPost]
[AllowAnonymous]
public ActionResult Login(string email, string password, bool? rememberMe)
{
if (email.IsNullOrWhiteSpace() || password.IsNullOrWhiteSpace())
{
return RedirectToAction("Index");
}
UserEntity user = new UserEntity() {Email = email, PasswordHash = password};
var userFromDb = _userService.FindUser(user);
if (userFromDb != null)
{
FormsAuthentication.SetAuthCookie(userFromDb.Name, rememberMe.GetValueOrDefault());
var a = HttpContext.User.Identity.IsAuthenticated; //This is still false for some reson
return RedirectToAction("Index", "User");
}
return RedirectToAction("Index");
}
但是在这个重定向方法之后,它给了我 401 Unauthorized
错误。
也好像 HttpContext.User.Identity.IsAuthenticated 是假的。
您是否知道 idea/suggestions 为什么会这样以及如何解决?
UPD:我还有一行来自 auth 的 webconfig 概念,所以这不是原因
<authentication mode="Forms">
<forms loginUrl="~/Login/Index" />
</authentication>
地点
<authentication mode="Forms" />
进入 <system.web>
内的 web.config 文件,以触发其效果。
找到原因了。由于某种原因,在我的 webconfig 中有一行抑制了 FormsAuthentication
module
<system.webServer>
<modules>
<remove name="FormsAuthentication" />
</modules>
</system.webServer>
所以这一行 FormsAuthentiction
不起作用,但如果我们将其注释掉或删除,一切都会按预期工作。