Asp.Net Identity – 登录后更新声明
发布时间:2020-05-24 10:18:47 所属栏目:asp.Net 来源:互联网
导读:我使用asp.net身份(WebApi 2,MVC 5,而不是.net核心)在从我的单页应用程序登录时向我的用户身份添加声明.这看起来像这样(我已经删除了对无效名称,锁定帐户等的检查) public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredent
|
我使用asp.net身份(WebApi 2,MVC 5,而不是.net核心)在从我的单页应用程序登录时向我的用户身份添加声明.这看起来像这样(我已经删除了对无效名称,锁定帐户等的检查) public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
var userManager = context.OwinContext.GetUserManager<CompWalkUserManager>();
var user = await userManager.FindByNameAsync(context.UserName);
var check = await userManager.CheckPasswordAsync(user,context.Password);
if (!check)
{
await userManager.AccessFailedAsync(user.Id);
context.SetError("invalid_grant",invalidUser);
return;
}
ClaimsIdentity oAuthIdentity = await user.GenerateUserIdentityAsync(userManager,OAuthDefaults.AuthenticationType);
ClaimsIdentity cookiesIdentity = await user.GenerateUserIdentityAsync(userManager,CookieAuthenticationDefaults.AuthenticationType);
//These claims are key/value pairs stored in the local database
var claims = GetClaimsForUser(user);
cookiesIdentity.AddClaims(claims);
oAuthIdentity.AddClaims(claims);
AuthenticationProperties properties = CreateProperties(user.UserName);
AuthenticationTicket ticket = new AuthenticationTicket(oAuthIdentity,properties);
context.Validated(ticket);
context.Request.Context.Authentication.SignIn(cookiesIdentity);
}
在这一点上,一切都按预期工作.我可以通过AuthorizationFilterAttribute检查用户的声明,因为我的api上的方法被调用. 但是,管理员可能会在用户登录时更改声明的值(我们的令牌有效期为14天).作为一个例子,我们有一个名为Locations的声明,其值为EditAndDelete.管理员可能会将此值更改为数据库中的NoAccess,但身份验证将不会了解此信息. 我可以看到,在运行时我可以添加或删除我的身份声明,但这些更改不会持续超过当前请求.有没有办法在运行中更新cookie中的身份验证票?我希望能够使用新值更新我的标识,而无需用户注销. 解决方法如果你想采用Identity方式,你需要在每次登录时点击数据库.您将SecurityStamp验证间隔设置为0:app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,LoginPath = new PathString("/Account/Login"),Provider = new CookieAuthenticationProvider
{
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager,ApplicationUser>(
validateInterval: TimeSpan.FromSeconds(0),regenerateIdentity: (manager,user) => user.GenerateUserIdentityAsync(manager))
}
});
为用户更改权限后,您将更新其安全性戳: UserManager.UpdateSecurityStamp(userId); (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Asp.Net Web Api – 发布英国日期格式
- asp.net-mvc-3 – 在MVC3中使用Html.LabelFor的表单标签中的
- 什么是最小的方式来缩小ASP.NET生成的Javascript?
- asp.net-mvc – 使用Entity Framework在控制器中检测模型属
- asp.net-mvc – 如何使用启用了延迟加载的Automapper和EF4
- 如何使用AutoMapper将多个OBJECTS映射到一个对象 – asp.ne
- asp.net-mvc-3 – RedirectResult Object作为URL中的参数
- asp.net – 在C#中从IronPython调用时引用Python“导入”程
- 在razorview中显示checkboxfor的文本
- 如何从ASP.NET中的Web请求返回pdf?
推荐文章
站长推荐
- asp.net-mvc – mvc4数据注释比较两个日期
- asp.net – 使用EF4代码优先:如何在不丢失数据的
- .net – 设置runat = server时输入名称和ID更改
- asp.net – Lucene.Net是否管理访问相同索引的多
- asp.net-mvc-3 – 为什么在使用Azure缓存(.NET M
- .NET 4.5通用成员资格提供程序表名称
- asp.net-mvc-3 – insert命令需要插入数据绑定设
- asp.net-mvc – 返回ASP.Net Core MVC中的上一页
- asp.net – 在文本框中输入按键时避免发出哔声
- 如何从ASP.NET中的代码隐藏文件访问IFRAME?
热点阅读
