为了账号安全,请及时绑定邮箱和手机立即绑定

如何将自定义属性添加到 IdentityServer4 PersistedGrantStore

如何将自定义属性添加到 IdentityServer4 PersistedGrantStore

C#
明月笑刀无情 2023-09-16 17:37:14
我们将 IPersistedGrantStore 的默认实现与 EntityFramework 和 SQL Server 结合使用。我需要存储 IP 地址(以获取“登录”上的“大致”位置数据),该表似乎是执行此操作的完美位置,因为它已经存储了客户端 ID、日期时间和刷新令牌的到期时间。是否可以扩展它并添加额外的属性?如果我实现自己的 IPersistedGrantStore 版本,我无法“破坏”接口定义的契约并添加额外的属性,甚至无法使用派生类(来自 IdentityServer4.Models.PersistedGrant),因为这也不会遵守接口。有什么方法可以向此表添加属性并更新 Grant Store 实现以在调用 StoreAsync 时添加它们?
查看完整描述

1 回答

?
慕哥9229398

TA贡献1877条经验 获得超6个赞

只需实现IPersistedGrantStore下面的类似代码,您就可以完全控制持久授权,您可以添加新列来存储。


public class PersistStore : IPersistedGrantStore

    {

        private readonly IPersistedGrandStoreService _persistedGrandStore;


        public PersistStore(IPersistedGrandStoreService persistedGrandStore)

        {

            _persistedGrandStore = persistedGrandStore;

        }


        public Task StoreAsync(PersistedGrant grant)

        {

            return _persistedGrandStore.AddAsync(grant.ToPersistedGrantModel());

        }


        public async Task<PersistedGrant> GetAsync(string key)

        {

            var grant = await _persistedGrandStore.GetAsync(key);

            return grant.ToPersistedGrant();

        }


        public async Task<IEnumerable<PersistedGrant>> GetAllAsync(string subjectId)

        {

            var grants = await _persistedGrandStore.GetAllAsync(subjectId);

            return grants.ToPersistedGrants();

        }


        public Task RemoveAsync(string key)

        {

            return _persistedGrandStore.RemoveAsync(key);

        }


        public Task RemoveAllAsync(string subjectId, string clientId)

        {

            return _persistedGrandStore.RemoveAllAsync(subjectId, clientId);

        }


        public Task RemoveAllAsync(string subjectId, string clientId, string type)

        {

            return _persistedGrandStore.RemoveAllAsync(subjectId, clientId, type);

        }

    }


查看完整回答
反对 回复 2023-09-16
  • 1 回答
  • 0 关注
  • 65 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信