我正在尝试使用基本表单身份验证实现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是假的。
你有什么想法/建议为什么会这样,以及如何解决它?
UPD:我也有来自auth的行webconfig概念,所以这不是原因
<authentication mode="Forms">
<forms loginUrl="~/Login/Index" />
</authentication>
答案 0 :(得分:7)
我找到了原因。出于某种原因,在我的webconfig中有一行,它禁止FormsAuthentication
模块
<system.webServer>
<modules>
<remove name="FormsAuthentication" />
</modules>
</system.webServer>
因此,此行FormsAuthentiction
无效,但如果我们将其评论或删除,则所有内容均按预期工作。
答案 1 :(得分:1)
放置
<authentication mode="Forms" />
放入<system.web>
内的web.config文件中,以触发其效果。