防止登录uuser访问登录页面asp.net mvc应用程序

时间:2016-06-30 13:14:01

标签: c# asp.net login asp.net-mvc-5

这是我的控制器。它不适用于登录用户阻止访问登录页面。请帮帮我。我已经使用了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);
}

2 个答案:

答案 0 :(得分:1)

我在我的代码中尝试了这一行

bool test = Request.IsAuthenticated;

总是出现错误。但是我在我的应用程序中使用Windows身份验证。如果您有登录屏幕,我假设您不是。我在网站上发现这篇文章总是从Request.IsAuthenticated收到错误值。显然,如果您从此标志中获得正确的值,您的代码应该可以正常工作。如果这不是答案,请告诉我,我可能会再研究一下。

Request.IsAuthenticated is always false

答案 1 :(得分:0)

这就是我的方式:

public bool IsAuthenticated
{
    get
    {
        return this._context.User != null && 
               this._context.User.Identity != null &&
               this._context.User.Identity.IsAuthenticated;
    }
}