zoukankan      html  css  js  c++  java
  • IdentityServer4实战:Token 中返回用户属性

    前言

    在前几篇的学习中,生成的 Token 中只有 sub 这一个用户属性,其他的 username、email、phone等用户属性均没有包含在内。在实际项目中又常常需要从 token 中取得 用户的 sex、head 等属性,本篇笔者将介绍一种添加自定义用户属性的方法,供笔友参考。

    IProfileService

    ids 4里面定义了一个IProfileService的接口用来获取用户的一些信息, 主要是为当前的认证上下文绑定claims。我们可以实现IProfileService从外部创建claim扩展到ids4里面。

    自定义 CustomerProfileService

    在 MicroShell.IdentityServer4.Server 项目新建 CustomerProfileService 类,实现 IProfileService 接口,编写业务代码。

    public class CustomerProfileService : IProfileService
        {
            protected readonly TestUserStore Users;
    
            /// <summary>
            /// 案例中用户使用的还是 Quickstart.UI 模板提供的用户,所以这里通过DI 容器取到用户资源
            /// </summary>
            /// <param name="users"></param>
            public CustomerProfileService(TestUserStore users)
            {
                Users = users;
            }
    
            public virtual Task GetProfileDataAsync(ProfileDataRequestContext context)
            {
                // 通过 用户id 找到用户
                var user = Users.FindBySubjectId(context.Subject.GetSubjectId());
                if (user != null)
                {
                    context.IssuedClaims.AddRange(user.Claims);
                }
    
                // 模拟一个用户属性
                context.IssuedClaims.Add(new System.Security.Claims.Claim("blogs", "https://limitcode.com/"));
    
                return Task.CompletedTask;
            }
             
            public async Task IsActiveAsync(IsActiveContext context)
            {
                context.IsActive = true;
            }
        }

    注入 CustomerProfileService

    PostMan 测试

    本文转载自:https://limitcode.com/detail/6070059591dfde22104dcf0e.html

  • 相关阅读:
    一文读懂快速排序
    15道APP测试面试题分享,助攻你的面试
    APP测试之使用ADB可能遇到的错误及解决办法
    APP测试之Monkey压力测试(二)
    APP测试之Monkey压力测试(一)
    APP日志文件抓取及分析
    Linux环境安装python3
    visualvm 插件 visual gc 使用介绍
    设计模式之状态
    【深入理解JVM】:Java内存模型JMM
  • 原文地址:https://www.cnblogs.com/limitcode/p/14639523.html
Copyright © 2011-2022 走看看