예제 #1
0
        /// <summary>
        /// 验证用户
        /// </summary>
        /// <param name="loginName"></param>
        /// <param name="password"></param>
        /// <returns></returns>
        private async Task <List <Claim> > ValidateUserAsync(string openId, string unionId)
        {
            //TODO 这里可以通过openId 和unionId 来查询用户信息,我这里为了方便测试还是直接写测试的openId 相关信息用户
            var user = OAuthMemoryData.GetWeiXinOpenIdTestUsers();

            if (user == null)
            {
                //注册用户
            }

            return(new List <Claim>()
            {
                new Claim(ClaimTypes.Name, $"{openId}"),
            });
        }
        /// <summary>
        /// 验证用户
        /// </summary>
        /// <param name="loginName"></param>
        /// <param name="password"></param>
        /// <returns></returns>
#pragma warning disable CS1998 // 此异步方法缺少 "await" 运算符,将以同步方式运行。请考虑使用 "await" 运算符等待非阻止的 API 调用,或者使用 "await Task.Run(...)" 在后台线程上执行占用大量 CPU 的工作。
        private async Task <List <Claim> > ValidateUserAsync(string openId, string unionId)
#pragma warning restore CS1998 // 此异步方法缺少 "await" 运算符,将以同步方式运行。请考虑使用 "await" 运算符等待非阻止的 API 调用,或者使用 "await Task.Run(...)" 在后台线程上执行占用大量 CPU 的工作。
        {
            //TODO 这里可以通过openId 和unionId 来查询用户信息,我这里为了方便测试还是直接写测试的openId 相关信息用户
            var user = OAuthMemoryData.GetWeiXinOpenIdTestUsers();

            if (user == null)
            {
                //注册用户
            }

            return(new List <Claim>()
            {
                new Claim(ClaimTypes.Name, $"{openId}"),
            });
        }
예제 #3
0
        /// <summary>
        /// 验证用户
        /// </summary>
        /// <param name="loginName"></param>
        /// <param name="password"></param>
        /// <returns></returns>
        private async Task <List <Claim> > ValidateUserAsync(string loginName, string password)
        {
            //TODO 这里可以通过用户名和密码到数据库中去验证是否存在,
            // 以及角色相关信息,我这里还是使用内存中已经存在的用户和密码
            var user = OAuthMemoryData.GetTestUsers();

            if (user == null)
            {
                throw new Exception("登录失败,用户名和密码不正确");
            }

            return(new List <Claim>()
            {
                new Claim(ClaimTypes.Name, $"{loginName}"),
            });
        }
예제 #4
0
 // This method gets called by the runtime. Use this method to add services to the container.
 public void ConfigureServices(IServiceCollection services)
 {
     services.AddControllers();
     #region 内存方式
     services.AddIdentityServer()
     .AddDeveloperSigningCredential()
     .AddInMemoryApiResources(OAuthMemoryData.GetApiResources())
     .AddInMemoryClients(OAuthMemoryData.GetClients())
     .AddTestUsers(OAuthMemoryData.GetTestUsers());
     #endregion
     services.AddAuthorization();
     services.AddAuthentication("Bearer")
     .AddIdentityServerAuthentication(options =>
     {
         options.Authority            = "http://localhost:5000"; //配置Identityserver的授权地址
         options.RequireHttpsMetadata = false;                   //不需要https
         options.ApiName = OAuthConfig.UserApi.ApiName;          //api的name,需要和config的名称相同
     });
 }
예제 #5
0
        /// <summary>
        /// 验证用户(角色Demo 专用方法)
        /// 这里和之前区分,主要是为了保留和博客同步源代码
        /// </summary>
        /// <param name="loginName"></param>
        /// <param name="password"></param>
        /// <returns></returns>
        private async Task <List <Claim> > ValidateUserByRoleAsync(string loginName, string password)
        {
            //TODO 这里可以通过用户名和密码到数据库中去验证是否存在,
            // 以及角色相关信息,我这里还是使用内存中已经存在的用户和密码
            var user = OAuthMemoryData.GetUserByUserName(loginName);

            if (user == null)
            {
                throw new Exception("登录失败,用户名和密码不正确");
            }

            //下面的Claim 声明我为了演示,硬编码了,
            //实际生产环境需要通过读取数据库的信息并且来声明

            return(new List <Claim>()
            {
                new Claim(ClaimTypes.Name, $"{user.UserName}"),
                new Claim(EnumUserClaim.DisplayName.ToString(), user.DisplayName),
                new Claim(EnumUserClaim.UserId.ToString(), user.UserId.ToString()),
                new Claim(EnumUserClaim.MerchantId.ToString(), user.MerchantId.ToString()),
                new Claim(JwtClaimTypes.Role.ToString(), user.Role.ToString())
            });
        }