asp.net核心身份声明与属性(效率观点)

我的名字叫杰夫

我已经阅读了所有有关该主题的教程和问题,但它们彼此矛盾

声明(用户声明和角色声明)被序列化为cookie(以及您通过覆盖原理工厂指定的自定义身份用户属性),但是不会被查询,而是存储在cookie中,这意味着用户拥有的声明越多拥有更多的数据将不得不在服务器和浏览器之间往返

默认情况下,自定义身份用户属性不会序列化,而是会从数据库中查询,因此,每当您需要该数据时,它都会从数据库中查询它,如果您经常查询该请求,则对每个请求在数据库上要做的工作更多

所以哪个更有效更安全

例如

IsAdmin应该是角色/声明吗?但是如果有人偷走了cookie,不,那该cookie已经包含了userid / username / securitystamp,因此,即使它是一个属性,被盗cookie上的userid也会查询自定义身份用户属性,或者是否有可能阻止这个cookie从什么时候起被盗?

另一个实例

如果我为用户设置了20个属性(名字,姓氏,地址1,地址2,邮政编码,无论何种情况),我是否应该让用户稍等一下,以便将较大的较慢的cookie发送回去来回还是应该使用自定义身份用户从数据库执行所有工作

但是,然后,如果我向用户删除或添加了声明,那么如果不被查询或安全戳是否验证此cookie仍然有效,是否会在下一个请求上对其进行更新?

因为在Task AddClaimsAsyncefcore的用户存储区中,它仅将声明添加到dbset

我很抱歉,我知道有很多问题要问,但是关于此事的资源不是很好,阅读身份信息很容易迷失方向

Trailmax

经验法则-将频繁添加的项目作为要求,其他所有内容都可以存在于DB中并按需查询。即,不是每个请求都要求地址1,地址2,因此请将其保存在数据库中。

另一方面IsAdmin(无论如何,都应该是一个角色),我可以想象每个请求都会被检查,因此它应该在cookie中,而不必查询数据库。

如果您担心自己的Cookie被盗,请不要将其显示给任何人!设置SecurityStampValidator为进行频繁检查-例如每5分钟检查一次。基本上,这会使用数据库中的最新信息来更新cookie并更改cookie。因此,即使cookie被盗,它也只能工作5分钟。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

ASP.NET核心身份角色,声明和用户

客户端特定声明身份 server4 使用 asp.net 核心身份

动态声明asp.net核心身份无数据库持久性

Asp.Net核心身份-使用角色和缓存授权属性?

IdentityServer4 Asp.Net核心身份

植入asp.net核心身份角色

Asp.net核心身份使用AspNetUserClaims还是AspNetRoleClaims?

ASP.Net 核心身份验证提供程序

建模asp.net核心身份用户访问

asp.net核心身份cookie重播攻击

Asp.net 核心身份验证

在没有asp的情况下,创建新的cookie之前,请检查声明(电子邮件)。使用ASP.NET核心社交登录的核心身份存储

带有 asp.net 核心身份的 Microsoft 身份平台

ASP.NET核心身份和身份服务器

asp.net核心身份中的Multiple&SubDomain的Cookie

为什么要求Asp.Net核心身份验证方案

通过电话号码在Asp.net核心身份中注册和登录

ASP.NET核心身份更改用户名/电子邮件

如何将dapper与ASP.Net核心身份一起使用?

在ASP.net核心身份(UserManager和SignInManager)中,是否可以立即禁止用户?

Asp.net核心身份成功登录重定向到登录页面

使用serilog记录来自ASP.Net核心身份的事件

Blazor服务器端的Asp.Net核心身份

ASP.NET核心身份种子仅创建最后一个用户

如何在多租户环境中使用Asp.Net核心身份

最佳实践:自定义asp.net核心身份授权

如何在视图中获取Asp.net核心身份用户

Asp.Net核心身份-没有角色的简单授权表

使用单独的类获取asp.net核心身份中的所有角色