这是我的控制器。它不适用于登录用户阻止访问登录页面。请帮帮我。我已经使用了request.Is我的控制器中的Authenicated和User.Identity方法
[HttpPost]
[AllowAnonymous]
public ActionResult Login(LoginViewModel model, string returnUrl)
{
if (Request.IsAuthenticated)
{
return RedirectToAction("Main","Home");
}
else if (!this.ModelState.IsValid)
{
return this.View(model);
}
else if (Membership.ValidateUser(model.Username, model.Password))
{
FormsAuthentication.SetAuthCookie(model.Username, model.RememberMe);
if (this.Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
&& !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
{
return this.Redirect(returnUrl);
}
return this.RedirectToAction("Main", "Home");
}
this.ModelState.AddModelError(string.Empty,"Invalid Credentials.");
this.ModelState.AddModelError(string.Empty, "The user name or password provided is incorrect.");
return this.View(model);
}
答案 0 :(得分:1)
我在我的代码中尝试了这一行
bool test = Request.IsAuthenticated;
总是出现错误。但是我在我的应用程序中使用Windows身份验证。如果您有登录屏幕,我假设您不是。我在网站上发现这篇文章总是从Request.IsAuthenticated收到错误值。显然,如果您从此标志中获得正确的值,您的代码应该可以正常工作。如果这不是答案,请告诉我,我可能会再研究一下。
答案 1 :(得分:0)
这就是我的方式:
public bool IsAuthenticated
{
get
{
return this._context.User != null &&
this._context.User.Identity != null &&
this._context.User.Identity.IsAuthenticated;
}
}