【发布时间】:2017-10-27 23:40:17
【问题描述】:
我已阅读有关该主题的所有教程和问题,但它们相互矛盾
claims(userclaims 和 roleclaims) 被序列化为一个 cookie(以及您通过覆盖主体工厂指定的自定义身份用户属性)但它们不会被查询,它们存储在一个 cookie 中,这意味着用户拥有的声明越多,服务器和浏览器之间往返的数据就越多
默认情况下,自定义身份用户属性不会序列化,而是从数据库中查询,因此每次您需要该数据时,它都会从数据库中查询它每个请求都需要在数据库上做更多的工作如果你经常查询它
那么哪个更高效,哪个更安全
例如
IsAdmin 应该是一个角色/声明?但是如果有人偷了 cookie,不,不,cookie 已经包含用户 ID/用户名/安全标记,所以即使它是一个属性,被盗 cookie 上的用户 ID 也会查询自定义身份用户属性,或者有什么东西可以阻止这个cookie在被盗时无法工作?
另一个实例
如果我有 20 个用户属性(名字、姓氏、地址 1、地址 2、邮政编码,无论是什么情况),我是否应该让用户稍等片刻,等待更大的慢速 cookie来回发送,或者我应该使用自定义身份用户从数据库中完成所有工作
但是,如果我删除或向用户添加声明,如果它没有被查询或安全标记是否验证此 cookie 仍然有效,它是否会在下一个请求时更新?
因为在 efcore 的用户存储的 Task AddClaimsAsync 处,它只将声明添加到 dbset
我很抱歉,我知道有很多问题要问,但是关于此事的资源不是很好,阅读身份来源很容易迷失方向
【问题讨论】:
标签: asp.net entity-framework asp.net-core asp.net-identity claims-based-identity