Ejemplo n.º 1
0
        public JwtTokenModel GetToken()
        {
            try
            {
                #region 第一版
                //var jwtConfig = AuthConfigData.AuthConfig.Jwt;
                ////定义发行人issuer
                //string iss = jwtConfig.Issuer;
                ////定义受众人audience
                //string aud = jwtConfig.Audience;

                ////定义许多种的声明Claim,信息存储部分,Claims的实体一般包含用户和一些元数据
                //IEnumerable<Claim> claims = new Claim[]
                //{
                //new Claim(JwtClaimTypes.Id,"1"),
                //new Claim(JwtClaimTypes.Name,"jelly"),
                //};
                ////notBefore  生效时间
                //// long nbf =new DateTimeOffset(DateTime.Now).ToUnixTimeSeconds();
                //var nbf = DateTime.UtcNow;
                ////expires   //过期时间
                //// long Exp = new DateTimeOffset(DateTime.Now.AddSeconds(1000)).ToUnixTimeSeconds();
                //var Exp = DateTime.UtcNow.AddSeconds(1000);
                ////signingCredentials  签名凭证
                //string sign = jwtConfig.Key; //SecurityKey 的长度必须 大于等于 16个字符
                //var secret = Encoding.UTF8.GetBytes(sign);
                //var key = new SymmetricSecurityKey(secret);
                //var signcreds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
                //var jwt = new JwtSecurityToken(issuer: iss, audience: aud, claims: claims, notBefore: nbf, expires: Exp, signingCredentials: signcreds);
                //var JwtHander = new JwtSecurityTokenHandler();
                //var token = JwtHander.WriteToken(jwt);
                //return Ok(new
                //{
                //    access_token = token,
                //    token_type = "Bearer",
                //});
                #endregion
                IEnumerable <Claim> claims = new Claim[]
                {
                    new Claim(ClaimsName.AccountId, "1"),
                    new Claim(ClaimsName.AccountName, "jelly"),
                    new Claim(ClaimsName.AccountType, AccountTypeEnum.USER.ToString()),
                };
                var jwtmodel = _loginHandler.Hand(claims, Guid.NewGuid().ToString(), "jelly");
                return(jwtmodel);
            }
            catch (Exception ex)
            {
                throw;
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 登录处理
        /// </summary>
        private IResultModel LoginHandle(ResultModel <LoginResultModel> result)
        {
            if (result.Successful)
            {
                var account   = result.Data.Account;
                var loginInfo = result.Data.AuthInfo;
                var claims    = new List <Claim>
                {
                    new Claim(ClaimsName.AccountId, account.Id.ToString()),
                    new Claim(ClaimsName.AccountName, account.Name),
                    new Claim(ClaimsName.AccountType, account.Type.ToInt().ToString()),
                    new Claim(ClaimsName.Platform, loginInfo.Platform.ToInt().ToString()),
                    new Claim(ClaimsName.LoginTime, loginInfo.LoginTime.ToString())
                };

                //自定义扩展Claims
                var extendClaims = _claimsExtendProvider.GetExtendClaims(account.Id);
                if (extendClaims != null && extendClaims.Any())
                {
                    claims.AddRange(extendClaims);
                }

                return(_loginHandler.Hand(claims, loginInfo.RefreshToken));
            }

            return(ResultModel.Failed(result.Msg));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 登录处理
        /// </summary>
        private IResultModel LoginHandle(LoginResultModel result)
        {
            if (result.Success)
            {
                var claims = new List <Claim>
                {
                    new Claim(ClaimsName.TenantId, result.TenantId != null ? result.TenantId.ToString() : ""),
                    new Claim(ClaimsName.AccountId, result.AccountId.ToString()),
                    new Claim(ClaimsName.AccountName, result.Name),
                    new Claim(ClaimsName.AccountType, result.AccountType.ToInt().ToString()),
                    new Claim(ClaimsName.Platform, result.Platform.ToInt().ToString()),
                    new Claim(ClaimsName.LoginTime, result.LoginTime.ToTimestamp().ToString())
                };

                //自定义扩展Claims
                var extendClaims = _claimsExtendProvider.GetExtendClaims(result.AccountId);
                if (extendClaims != null && extendClaims.Any())
                {
                    claims.AddRange(extendClaims);
                }

                return(_loginHandler.Hand(claims, result.RefreshToken));
            }

            return(ResultModel.Failed(result.Error));
        }
Ejemplo n.º 4
0
        public async Task <IResultModel> Login([FromBody] LoginModel model)
        {
            var result = await _service.Login(model);

            if (result.Successful)
            {
                var account   = result.Data.Account;
                var loginInfo = result.Data.AuthInfo;
                var claims    = new[]
                {
                    new Claim(ClaimsName.AccountId, account.Id.ToString()),
                    new Claim(ClaimsName.AccountName, account.Name),
                    new Claim(ClaimsName.AccountType, model.AccountType.ToInt().ToString()),
                    new Claim(ClaimsName.Platform, model.Platform.ToInt().ToString()),
                    new Claim(ClaimsName.LoginTime, loginInfo.LoginTime.ToString())
                };

                return(_loginHandler.Hand(claims, loginInfo.RefreshToken));
            }

            return(ResultModel.Failed(result.Msg));
        }
Ejemplo n.º 5
0
        public async Task <IResultModel> Login([FromBody] LoginModel model)
        {
            var result = await _service.Login(model);

            if (result.Successful)
            {
                var account = result.Data;
                var claims  = new[]
                {
                    new Claim("id", account.Id.ToString()),
                    new Claim("pf", model.Platform.ToInt().ToString()),
                };
                return(_loginHandler.Hand(claims));
            }

            return(ResultModel.Failed(result.Msg));
        }
Ejemplo n.º 6
0
        public async Task <IResultModel> Login([FromBody] LoginModel model)
        {
            model.IP = _loginInfo.IPv4;
            var result = await _service.Login(model);

            if (result.Successful)
            {
                var account = result.Data;
                var claims  = new[]
                {
                    new Claim(ClaimsName.AccountId, account.Id.ToString()),
                    new Claim(ClaimsName.AccountType, model.AccountType.ToInt().ToString()),
                    new Claim(ClaimsName.Platform, model.Platform.ToInt().ToString())
                };

                return(_loginHandler.Hand(claims));
            }

            return(ResultModel.Failed(result.Msg));
        }