我已阅读有关该主题的所有教程和问题,但它们相互矛盾
声明(userclaims 和 roleclaims)被序列化到 cookie 中(以及您通过覆盖原理工厂指定的自定义身份用户属性),但它们不会被查询,而是存储在 cookie 中,这意味着用户的声明越多有,服务器和浏览器之间往返的数据就越多
默认情况下,自定义身份用户属性不会被序列化,而是从数据库中查询,因此每次您需要该数据时,它都会从数据库中查询它,如果您经常查询它,则每个请求都需要在数据库上做更多工作
那么哪个更有效,哪个更安全
例如
IsAdmin 应该是一个角色/声明吗?但是如果有人偷了cookie,不,cookie已经包含userid/username/securitystamp,所以即使它是一个属性,被盗cookie上的userid也会查询自定义身份用户属性,或者有什么可以阻止这个 cookie 被盗后会无法工作吗?
另一个例子
如果我有 20 个用户属性(名字、姓氏、地址 1、地址 2、邮政编码,无论是什么情况),我是否应该让用户稍等一下,以便发回更大、更慢的 cookie或者我应该使用自定义身份用户从数据库完成所有工作
但是,如果我删除或添加对用户的声明,如果没有被查询,它是否会在下一个请求时更新,或者安全标记是否验证此 cookie 仍然有效?
因为在Task AddClaimsAsyncefcore 的用户存储中,它只将声明添加到 dbset
我很抱歉,我知道有很多问题要问,但有关此事的资源不是很好,人们很容易在阅读身份来源时迷失方向
asp.net entity-framework claims-based-identity asp.net-identity asp.net-core
如何更改旧迁移的名称(重命名)?它与我的自定义身份用户的名称冲突。
更改身份用户会更容易吗?我也不知道如何重命名它,为了简单起见,每个教程都只是创建一个新的数据库(任何有关此的信息也值得赞赏)。
是否像将其重命名为一样简单:
是这样吗?知道这会不会把事情搞砸吗?
我允许知道密码但尚未确认的新创建用户更改其注册电子邮件(只要未在我的数据库中注册)
问题是,如果他们更改了电子邮件,我将生成新的电子邮件确认令牌,但是旧令牌仍可以验证它们(我在注册时发出的令牌),这很可能意味着人们可以首先使用其注册邮件进行更改将其发送到他们无法访问的其他邮件,并通过旧邮件进行验证,这对我来说是一个很大的安全漏洞
有什么办法可以删除/撤销旧令牌?(从技术上讲,我可以创建一个新用户并删除旧用户,旧令牌将不适用于新用户,但是我认为应该为此提供更好的解决方案)
asp.net asp.net-mvc asp.net-identity asp.net-identity-2 asp.net-core