ASP.net MVC 自定义声明
ASP.net MVC Custom Claims
我是在用户登录系统时调用用户权限。在我的用户访问中包括 UserName,UserRole,UserId,ReqAccess,ViewAccess 等
在我的声明中,我可以添加用户 ID 和用户名,但我想添加对单独声明的其他访问权限,但是当我键入 claims.Add(new Claim(ClaimTypes.
时,列表仅显示列出的项目。如何添加自己的声明并添加?
public void SignInUser(string username, string userRole, string userid, bool isPersistent)
{
// Initialization.
var claims = new List<Claim>();
try
{
// Setting
claims.Add(new Claim(ClaimTypes.Name, username));
claims.Add(new Claim(ClaimTypes.Role, userRole));
claims.Add(new Claim("UserId", userid));
var claimIdenties = new ClaimsIdentity(claims, DefaultAuthenticationTypes.ApplicationCookie);
var ctx = Request.GetOwinContext();
var authenticationManager = ctx.Authentication;
// Sign In.
authenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent }, claimIdenties);
var identity = new ClaimsIdentity(claims, DefaultAuthenticationTypes.ApplicationCookie);
var claimsPrincipal = new ClaimsPrincipal(identity);
Thread.CurrentPrincipal = claimsPrincipal;
}
catch (Exception ex)
{
// Info
throw ex;
}
}
你或许可以尝试这样的事情 claims.Add(new Claim("customClaim", "claimValue"));
所以声明 class 应该有一个重载的构造函数,它将字符串值作为声明类型
我这样做了并且工作正常:
var user = await UserManager.FindAsync(model.Email, model.Password);
if (user != null)
{
var identity = UserManager.CreateIdentity(user, DefaultAuthenticationTypes.ApplicationCookie);
identity.AddClaims(new[]
{
new Claim("FullName", user.FullName),
new Claim("roleId", user.Roles.FirstOrDefault().RoleId),
});
AuthenticationManager.SignIn( new AuthenticationProperties() { IsPersistent = true }, identity);
return View();
}
获取用户详细信息并将其保存在声明中。
我是在用户登录系统时调用用户权限。在我的用户访问中包括 UserName,UserRole,UserId,ReqAccess,ViewAccess 等
在我的声明中,我可以添加用户 ID 和用户名,但我想添加对单独声明的其他访问权限,但是当我键入 claims.Add(new Claim(ClaimTypes.
时,列表仅显示列出的项目。如何添加自己的声明并添加?
public void SignInUser(string username, string userRole, string userid, bool isPersistent)
{
// Initialization.
var claims = new List<Claim>();
try
{
// Setting
claims.Add(new Claim(ClaimTypes.Name, username));
claims.Add(new Claim(ClaimTypes.Role, userRole));
claims.Add(new Claim("UserId", userid));
var claimIdenties = new ClaimsIdentity(claims, DefaultAuthenticationTypes.ApplicationCookie);
var ctx = Request.GetOwinContext();
var authenticationManager = ctx.Authentication;
// Sign In.
authenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent }, claimIdenties);
var identity = new ClaimsIdentity(claims, DefaultAuthenticationTypes.ApplicationCookie);
var claimsPrincipal = new ClaimsPrincipal(identity);
Thread.CurrentPrincipal = claimsPrincipal;
}
catch (Exception ex)
{
// Info
throw ex;
}
}
你或许可以尝试这样的事情 claims.Add(new Claim("customClaim", "claimValue"));
所以声明 class 应该有一个重载的构造函数,它将字符串值作为声明类型
我这样做了并且工作正常:
var user = await UserManager.FindAsync(model.Email, model.Password);
if (user != null)
{
var identity = UserManager.CreateIdentity(user, DefaultAuthenticationTypes.ApplicationCookie);
identity.AddClaims(new[]
{
new Claim("FullName", user.FullName),
new Claim("roleId", user.Roles.FirstOrDefault().RoleId),
});
AuthenticationManager.SignIn( new AuthenticationProperties() { IsPersistent = true }, identity);
return View();
}
获取用户详细信息并将其保存在声明中。