2016-06-30 25 views
0

这是我的控制器。它不适合登录的用户阻止访问登录页面。请帮助我。我已经使用了request.Is Authenicated和User.Identity方法在我的控制器阻止登录的用户访问登录页面asp.net mvc应用程序

[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); 
} 

回答

1

我想在我的代码

布尔测试此线= Request.IsAuthenticated;

它总是出现错误。但是我在我的应用程序中使用Windows身份验证。如果你有登录屏幕,我假设你不是。我在网站上发现这个帖子总是从Request.IsAuthenticated接收到一个错误的值。显然你的代码应该工作,如果你从这个标志接收到正确的值。如果这不是答案,让我知道我可能会研究多一点。

Request.IsAuthenticated is always false

0

这是我的方式做:

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