Asp.net mvc Mvc标识Longin ClaimsPrincipal值始终为空
这是我的登录控制器Asp.net mvc Mvc标识Longin ClaimsPrincipal值始终为空,asp.net-mvc,c#-4.0,asp.net-identity,principal,Asp.net Mvc,C# 4.0,Asp.net Identity,Principal,这是我的登录控制器 public class AccountController : BaseController { [HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public ActionResult Login(LoginViewModel model, string returnUrl) {
public class AccountController : BaseController
{
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Login(LoginViewModel model, string returnUrl)
{
var identity = new ClaimsIdentity(new[]
{
new Claim(ClaimTypes.Name, "Huang"),
new Claim(ClaimTypes.NameIdentifier, user.Vaild.ToString()),
new Claim(ClaimTypes.Email,"xxx@gmail.com"),
new Claim(ClaimTypes.MobilePhone,"123456"),
},DefaultAuthenticationTypes.ApplicationCookie);
IdentityTool.Authentication(AuthenticationManager,identity,rememberMe:true);
// userEmail and userPhone always null and I got null exception
var userEmail = CurrentUser.Email;
var userPhone = CurrentUser.MobilePhone;
return View(model);
}
}
public class BaseController : Controller
{
public AppUser CurrentUser
{
get { return new AppUser(this.User as System.Security.Claims.ClaimsPrincipal);}
}
}
标识配置
public class IdentityTool
{
public static void Authentication(IAuthenticationManagerauthenticationManager, ClaimsIdentity identity, bool rememberMe)
{
if (rememberMe)
{
authenticationManager.SignIn(new AuthenticationProperties()
{
IsPersistent = true,
ExpiresUtc = DateTimeOffset.UtcNow.AddDays(14)
}, identity);
}
else
{
authenticationManager.SignIn(new AuthenticationProperties()
{
IsPersistent = false
}, identity);
}
}
}
//Custom property
public class AppUser : ClaimsPrincipal
{
public AppUser(ClaimsPrincipal principal) : base(principal)
{
}
public string Email
{
get
{
return this.FindFirst(ClaimTypes.Email).Value;
}
}
public string MobilePhone
{
get
{
return this.FindFirst(ClaimTypes.MobilePhone).Value;
}
}
}
这是我的创业公司
public void ConfigureAuth(IAppBuilder app)
{
AntiForgeryConfig.UniqueClaimTypeIdentifier = ClaimTypes.NameIdentifier;
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType =DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login"),
Provider = new CookieAuthenticationProvider
{
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
validateInterval: TimeSpan.FromMinutes(30),
regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
}
});
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
public void ConfigureAuth(IAppBuilder应用程序)
{
AntiForgeryConfig.UniqueClaimTypeIdentifier=ClaimTypes.NameIdentifier;
app.UseCookieAuthentication(新的CookieAuthenticationOptions
{
AuthenticationType=DefaultAuthenticationTypes.ApplicationOkie,
LoginPath=新路径字符串(“/Account/Login”),
Provider=新CookieAuthenticationProvider
{
OnValidateIdentity=SecurityStampValidator.OnValidateIdentity是否已在web.config中移动表单身份验证?您在authenticationManager中有什么?我没有修改web.config。我需要删除web.config中的一些代码?将配置身份验证替换为--public void ConfigureAuth(IAppBuilder应用程序){AntiForgeryConfig.UniqueClaimTypeIdentifier=ClaimTypes.NameIdentifier;app.UseCookieAuthentication(新CookieAuthenticationOptions{AuthenticationType=DefaultAuthenticationTypes.ApplicationCookie,LoginPath=new PathString(“/Account/Login”), });}