首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >30分钟后在asp.net核心身份中丢失的其他索赔

30分钟后在asp.net核心身份中丢失的其他索赔
EN

Stack Overflow用户
提问于 2020-02-26 19:56:14
回答 2查看 2.7K关注 0票数 7

我正在将索赔添加到索赔主体身份,并将用户登录。在随后的请求中,索赔主体在应用程序中的任何地方都可以使用添加的索赔,但只需25分钟。我还没做过25到30分钟的测试。30分钟后,理赔主体标识仍然是经过身份验证的,但只有来自标识数据库的声明。在Login添加的"CookieClaim“丢失了。声明主体身份"IsAuthenticated“仍然是正确的,Nav菜单中的问候语仍然是"Hi emailaddress”。如果我们在20分钟提出要求,这并不重要。

我希望只要用户登录,这些声明就可以使用。

该应用程序使用OAuth从多个外部提供者获取用户的访问令牌和其他信息,该信息用于整个应用程序的授权。我选择将信息放在cookie中,因为它可能会定期更改,并且不适合存储在标识数据库中。

下面的代码来自我为演示的LoginModel核心应用程序的脚手架asp.net。它与我的主要应用程序不完全一样,但是添加了声明,输入"CookieClaim“并使用相同的方法登录。从"IdentityUser用户.“开始的四行这是我对模板asp.net核心web应用程序所做的唯一更改(在搭建“登录”页面之后,使用本地用户帐户)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public async Task<IActionResult> OnPostAsync(string returnUrl = null)
{
    returnUrl = returnUrl ?? Url.Content("~/");

    if (ModelState.IsValid)
    {
        // This doesn't count login failures towards account lockout
        // To enable password failures to trigger account lockout, set lockoutOnFailure: true
        var result = await _signInManager.PasswordSignInAsync(Input.Email, Input.Password, Input.RememberMe, lockoutOnFailure: true);
        if (result.Succeeded)
        {
            IdentityUser user = await _signInManager.UserManager.FindByEmailAsync(Input.Email);
            ClaimsPrincipal currentUser = await _signInManager.CreateUserPrincipalAsync(user);
            currentUser.Identities.ElementAt(0).AddClaim(new Claim("CookieClaim", "I am in the Cookie"));
            await HttpContext.SignInAsync(IdentityConstants.ApplicationScheme, currentUser, new AuthenticationProperties());

            _logger.LogInformation("User logged in.");
            return LocalRedirect(returnUrl);
        }

在这个应用程序的身份数据库中,我为用户添加了一个声明,输入“IdentityDatabaseClaim”。此图像显示登录后索赔主体的声明。对于前25分钟的任何请求,这种情况都没有改变:

30分钟后,来自数据库的声明仍然存在,但是登录时在cookie中发送的声明类型"CookieClaim“并不存在,如下所示:

请注意,对于索赔主体标识而言,IsAuthenticated仍然是正确的,此时,来自Identity数据库的所有声明都在那里。

我已经尝试将ExpireTimeSpan设置在Startup.cs中的cookie上,但这没有任何效果。我很确定这个问题不是cookie过期,否则用户仍然无法通过身份验证。我还尝试在身份验证属性上设置IsPersistent、IssuedUtc和ExpiresUtc,主要是为了避免给任何人提供这些属性作为这个问题的答案的麻烦。没什么不同的。

我需要知道是什么方法或设置导致HttpContext (表面上)忽略请求cookie中的数据,并从标识数据库中创建一个新的Claims主体,以及我是否可以( a)关闭它或( b)捕获它,以便在它删除它们之前保存这些声明,并在它试图通过下一个授权筛选器之前再附加它们。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-28 21:08:35

只有当我们使用Application.Identity方案(IdentityConstants.ApplicationScheme)登录时,才会发生这种行为。使用不同的方案登录,您添加到该身份的任何声明都将持续到cookie。所以在ConfigureServices in Startup.cs中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
services.AddAuthentication()
    .AddCookie("CustomClaimsCookie")

然后在OnGetCallbackAsync()方法中登录时,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ExternalLoginInfo info = await _signInManager.GetExternalLoginInfoAsync();
AuthenticationProperties props = new AuthenticationProperties();
props.StoreTokens(info.AuthenticationTokens);
await HttpContext.SignInAsync("CustomClaimsCookie", info.Principal, props);
票数 0
EN

Stack Overflow用户

发布于 2021-09-27 06:54:14

所提供的解决方案对我无效,但我找到了这个https://github.com/dotnet/aspnetcore/issues/10328#issuecomment-493451017

每15-20分钟刷新一次

是有意义的,因为这是我们从后端数据库刷新cookie的时候,而且由于您的更改不是从那里来的,所以您的附加声明将不会被刷新。所以有几种方法可以解决这个问题;

ApplicationUser

  • Use

  • 将这些声明放在您的身份数据库中,因此它们将出现在“
  1. ”中。

我试过第二次了。它可以工作,但每次都会进入数据库。需要找到解决方案-如何在登录后更新cookie。

然后,我尝试了第一个解决方案--只需将"MyClaim“存储在AspNetUserClaims标识表中即可。我们可以使用UserManagerTUser管理索赔。看来很管用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60426024

复制
相关文章
腾讯云丢失数据被索赔1100万!
腾讯方面提出了总金额136,469元的“赔偿+补偿”解决方案,前沿数控则索赔11,016,000元,被腾讯认为过高,双方未达成一致。
BestSDK
2018/08/17
4.2K0
腾讯云丢失数据被索赔1100万!
在 ASP.NET Core 应用中使用 Cookie 进行身份认证
身份认证是网站最基本的功能,最近因为业务部门的一个需求,需要对一个已经存在很久的小工具网站进行改造,因为在逐步的将一些离散的系统迁移至 .NET Core,所以趁这个机会将这个老的 .NET Framework 4.0 的项目进行升级
程序员宇说
2021/02/04
1.4K0
在 ASP.NET Core 应用中使用 Cookie 进行身份认证
在 ASP.NET Core 中修改配置文件后自动加载新的配置
在 ASP.NET Core 默认的应用程序模板中, 配置文件的处理如下面的代码所示:
beginor
2020/08/07
2.6K0
mac用户丢失管理员身份急救
用了这么久mac,发现居然还存在这么大一个bug。就是如果你曾经编辑mac电脑默认用户资料,比如试图改用户名、试图改HOME路径之类的,有很高比率可能导致该用户丧失管理员权限。 随后悲剧就开始了,所有需要管理员权限认证的地方,比如安装了一个新软件,在弹出的认证窗口中,无论如何输入用户名和密码,都无法授权通过。此时在系统设置->用户及用户组中,会发现该用户选项卡中“允许用户管理这台电脑”前面的勾选已经不见了。当然这时候因为无法授权修改用户权限,因此也无法重新勾选上这个选项。 解决方法一: 这个是通常的
俺踏月色而来
2018/06/15
3.4K0
IIS服务器中 ASP.NET State Service 开启后 Session 仍容易丢失的问题终极解决办法
IIS服务器中 ASP.NET State Service 开启后 Session 仍容易丢失的问题终极解决办法
会长君
2023/04/26
7890
部署hexo后样式丢失问题
如果遇到hexo部署到gitee后样式丢失,并且控制台没有报错的话,可以修改hexo配置文件
阿超
2022/08/16
1.5K0
部署hexo后样式丢失问题
img图片丢失后默认图
我们在使用img标签时经常会遇到图片丢失等情况,我们可以给图片设置一个默认图 写法如下: <img src onerror="this.src='https://waibi.oss-cn-chengdu.aliyuncs.com/2020-06-01/head.jpg'" /> 这时候我们并没有给src属性赋值,导致触发onerror事件,执行了其中的js 当然如果我们是正常的图片,是无影响的
阿超
2022/08/21
6750
img图片丢失后默认图
细胞身份何以在分裂中得以保持?
为了回答这问题,我又买了一套高中生物教材。在教材《分子与细胞》中《细胞的增殖》一节,讲过细胞有丝分裂的过程之后,编委总结道:
生信技能树jimmy
2020/11/02
1K0
细胞身份何以在分裂中得以保持?
Kerberos 身份验证在 ChunJun 中的落地实践
Kerberos,在古希腊神话故事中,指的是一只三头犬守护在地狱之门外,禁止任何人类闯入地狱之中。
袋鼠云数栈
2022/12/16
1.6K0
身份证丢失后被刷脸欠上万贷款,银行:人脸识别到就是你借的!
博雯 发自 凹非寺 量子位 报道 | 公众号 QbitAI 人在家中坐,欠款天上来。 而且还是在身份证已经遗失的情况下,莫名其妙地收到了银行的起诉: 亲亲,您借走的一万多元现在都还没还哦。 不会弄错的,确认是您通过人脸识别之后办了张新卡,然后借了钱的呢。 “人脸识别说你借钱了” 在银行的描述里,事情最先发生在2019年11月25日,银行的线下营业网点中。 借款的王女士先是现场填写了开户签约申请表: △图源中国新闻周刊,下同 经过人脸识别核验身份后,她自助办理了借记卡账户业务,并开通了手机银行功能:
量子位
2023/03/01
9520
身份证丢失后被刷脸欠上万贷款,银行:人脸识别到就是你借的!
怎么在自己的网页中引用其他好看的字体?
有的网站字体,用户电脑上没有,如果只是单纯的定义 font-family 是不起效的。 我们可以将字体文件放置在网站目录(知道君喜欢放在OSS,但是这个需要注意跨域的问题),直接引入,这样即使用户电脑上没有该字体也能自动加载。设置方法如下: css 代码:自定义字体
夏末浅笑
2020/02/22
2.4K0
怎么在自己的网页中引用其他好看的字体?
ASP.NET实现身份模拟
使用模拟时,ASP.NET 应用程序可以选择以这些应用程序当前正为之操作的客户的身份执行。通常这样做的原因是为了避免在 ASP.NET 应用程序代码中处理身份验证和授权问题。而您依赖于 Microsoft Internet 信息服务 (IIS) 来验证用户,然后将已通过验证的标记传递给 ASP.NET 应用程序;或者,如果无法验证用户,则传递未经身份验证的标记。不论何种情况,如果启用了“模拟”,则 ASP.NET 应用程序会模拟所收到的任何标记。当前模拟客户的 ASP.NET 应用程序依赖于 NTFS 目录和文件中的设置来允许客户获得访问权限或拒绝其访问。务必将服务器文件空间格式化为 NTFS,以便可以设置访问权限。
Java架构师必看
2021/03/22
1.9K0
理解ASP.NET Core - Cookie 的身份认证
链接:cnblogs.com/xiaoxiaotank/p/15811749.html
郑子铭
2022/03/22
1K0
理解ASP.NET Core - Cookie 的身份认证
故障分析 | 生产系统数据丢失后的恢复
2020 年 2 月 25 日,微信的朋友圈大量转载微盟遭遇了系统重大故障(36 小时内尚未恢复核心生产数据)。从而想到本人在两周前处理的一个案例:开发人员误删除了生产数据,本人恢复的一个过程。同时给这个故障的处理过程做一个总结,也对学过的知识做一个梳理,希望对运维的同学们有一个警示作用。
爱可生开源社区
2021/02/01
1.2K0
git merge后 丢失文件 以及 代码
git merge 快速合并时会以某个文件新的操作为准,如果master将一个dev合并进来,而dev分支中对某个文件进行过删除操作,那么merge之后master就会将那个文件删除。
MickyInvQ
2020/09/27
6.1K0
实战解读ASP.NET Core身份认证
显而易见,一个常规的身份认证用例包括两部分: ① 对用户进行身份验证 ② 在未经身份验证的用户试图访问受限资源时作出反应
有态度的马甲
2020/10/10
1.8K0
实战解读ASP.NET Core身份认证
【C】KoobooJson在asp.net core中的使用
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/j_teng/article/details/100924973
心莱科技雪雁
2019/09/25
6680
【C】KoobooJson在asp.net core中的使用
在ASP.NET中操作文件的例子
本文由来源 21aspnet,由 javajgs_com 整理编辑,其版权均为 21aspnet 所有,文章内容系作者个人观点,不代表 Java架构师必看 对观点赞同或支持。如需转载,请注明文章来源。
Java架构师必看
2021/03/22
1.1K0
IoC在ASP.NET Web API中的应用
控制反转(Inversion of Control,IoC),简单地说,就是应用本身不负责依赖对象的创建和维护,而交给一个外部容器来负责。这样控制权就由应用转移到了外部IoC容器,控制权就实现了所谓的
蒋金楠
2018/01/15
1.8K0
IoC在ASP.NET Web API中的应用
在 ASP.NET Core 中安装 MVC
到目前为止,我们在本系列视频中使用的 ASP.NET Core 项目是使用“空”项目模板生成的。目前这个项目没有设置和安装 MVC。
角落的白板报
2019/05/15
1.5K0

相似问题

ClaimsIdentity在ASP.NET核心身份系统中丢失的索赔

21

ASP.NET核心自定义索赔丢失

14

部署后ASP.Net核心身份登录状态丢失

33

ASP.NET身份和索赔

23

添加索赔(asp.net核心mvc OpenID Owin Katana身份验证)

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文