【发布时间】:2016-04-28 11:12:32
【问题描述】:
我需要能够随时在应用程序控制器中向用户添加/删除声明。这怎么可能?步骤是什么?
我正在使用 ASP.NET CORE RC1 并使用 Microsoft.AspNet.Authorization。
例如:
public IActionResult ChangeUserInfo(int id, User user)
{
var mUser = db.Users.Where(d => d.UserId == id).First();
mUser.Email = user.Email;
// change claims, How?
db.SaveChanges();
return View();
}
I'm using the new Authentication API and NOT Identity!
编辑:
这是我用来获取附加声明、将它们添加到声明身份并注销用户然后再次登录用户的方法,但它不起作用。 (如果用户手动退出,它可以工作)
public async Task<IActionResult> SingInAsync(HttpContext httpContext, string rememberme, bool forceSingOut = false, List<System.Security.Claims.Claim> additionalClaims = null)
{
var userIdentity = new ClaimsIdentity("SecureLogin");
userIdentity.AddClaims(_claims);
if(additionalClaims != null)
{
userIdentity.AddClaims(additionalClaims);
}
var userPrincipal = new ClaimsPrincipal(userIdentity);
if(forceSingOut)
{
await httpContext.Authentication.SignOutAsync("Cookie");
}
await httpContext.Authentication.SignInAsync("Cookie", userPrincipal,
new AuthenticationProperties
{
ExpiresUtc = (rememberme != null) ? DateTime.UtcNow.AddDays(int.Parse(_config["AppOptions:RememberMeDuration"])) : DateTime.UtcNow.AddMinutes(20),
IsPersistent = false,
AllowRefresh = false,
});
return null;
}
然后它被称为:
await customUserManager.SingInAsync(HttpContext, null, true, additClaims);
【问题讨论】:
标签: c# authentication asp.net-core asp.net-core-mvc