示例#1
0
        /// <summary>
        /// 获取基于JWT的Token
        /// </summary>
        /// <param name="claims">需要在登陆的时候配置</param>
        /// <returns></returns>
        public static TokenInfoViewModel BuildJwtToken(Claim[] claims)
        {
            var symmetricKeyAsBase64 = "sdfsdfsrty45634kkhllghtdgdfss345t678fs";
            var keyByteArray         = Encoding.ASCII.GetBytes(symmetricKeyAsBase64);
            var signingKey           = new SymmetricSecurityKey(keyByteArray);
            var Issuer   = AppsettingHelper.GetValue(new string[] { "Audience", "Issuer" });
            var Audience = AppsettingHelper.GetValue(new string[] { "Audience", "Audience" });

            var signingCredentials = new SigningCredentials(signingKey, SecurityAlgorithms.HmacSha256);
            var now = DateTime.Now;
            // 实例化JwtSecurityToken
            var jwt = new JwtSecurityToken(
                issuer: Issuer,
                audience: Audience,
                claims: claims,
                notBefore: now,
                expires: now.Add(new TimeSpan(60)),
                signingCredentials: signingCredentials
                );
            // 生成 Token
            var encodedJwt = new JwtSecurityTokenHandler().WriteToken(jwt);

            //打包返回前台
            var responseJson = new TokenInfoViewModel
            {
                success    = true,
                token      = encodedJwt,
                expires_in = 60,
                token_type = "Bearer"
            };

            return(responseJson);
        }
示例#2
0
        /// <summary>
        /// 获取基于JWT的Token
        /// </summary>
        /// <param name="claims">需要在登陆的时候配置</param>
        /// <param name="permissionRequirement">在startup中定义的参数</param>
        /// <returns></returns>
        public static TokenInfoViewModel BuildJwtToken(Claim[] claims, PermissionRequirement permissionRequirement)
        {
            var now = DateTime.Now;
            // 实例化JwtSecurityToken
            var jwt = new JwtSecurityToken(
                issuer: permissionRequirement.Issuer,
                audience: permissionRequirement.Audience,
                claims: claims,
                notBefore: now,
                expires: now.Add(permissionRequirement.Expiration),
                signingCredentials: permissionRequirement.SigningCredentials
                );
            // 生成 Token
            var encodedJwt = new JwtSecurityTokenHandler().WriteToken(jwt);

            //打包返回前台
            var responseJson = new TokenInfoViewModel
            {
                success    = true,
                token      = encodedJwt,
                expires_in = permissionRequirement.Expiration.TotalSeconds,
                token_type = "Bearer"
            };

            return(responseJson);
        }
示例#3
0
        /// <summary>
        /// 获取基于Jwt的Token
        /// </summary>
        /// <param name="claims">需要在登陆的时候配置</param>
        /// <returns></returns>
        public static TokenInfoViewModel BuildJwtToken(Claim[] claims)
        {
            //读取配置文件
            var symmetricKeyAsBase64 = AppSecretConfig.Audience_Secret_String;
            var keyByteArray         = Encoding.ASCII.GetBytes(symmetricKeyAsBase64);
            var signingKey           = new SymmetricSecurityKey(keyByteArray);
            var Issuer             = AppSettings.app(new string[] { "Audience", "Issuer" });
            var Audience           = AppSettings.app(new string[] { "Audience", "Audience" });
            var Expires            = Convert.ToInt32(AppSettings.app(new string[] { "Audience", "Expires" }) ?? "15");
            var signingCredentials = new SigningCredentials(signingKey, SecurityAlgorithms.HmacSha256);
            var token = new JwtSecurityToken(
                issuer: Issuer,
                audience: Audience,
                claims: claims,
                expires: DateTime.Now.AddMinutes(Expires),
                signingCredentials: signingCredentials
                );
            //生成token
            var encodedJwt = new JwtSecurityTokenHandler().WriteToken(token);
            //打包返回前台
            var responseJson = new TokenInfoViewModel
            {
                token      = encodedJwt,
                expires_in = (int)TimeSpan.FromMinutes(Expires).TotalSeconds,
                token_type = "Bearer"
            };

            return(responseJson);
        }
示例#4
0
        public async Task <ApiResult <TokenInfoViewModel> > GetJwtToken(string name = "", string pwd = "")
        {
            if (string.IsNullOrEmpty(name) || string.IsNullOrEmpty(pwd))
            {
                return(new ApiResult <TokenInfoViewModel>()
                {
                    status = 400,
                    msg = "用户名或密码不能为空",
                });
            }
            var administrator = await _administratorServices.GetEntity(t => t.Account.Equals(name) && t.Password.Equals(MD5Helper.MD5Encrypt32(pwd)));

            if (administrator != null)
            {
                //创建声明数组
                var claims = new Claim[] {
                    new Claim(ClaimTypes.Name, administrator.Account),
                    new Claim(JwtRegisteredClaimNames.Email, administrator.Email),
                    new Claim(JwtRegisteredClaimNames.Sub, administrator.Id.ToString())
                };
                //读取配置文件
                var symmetricKeyAsBase64 = AppSecretConfig.Audience_Secret_String;
                var keyByteArray         = Encoding.ASCII.GetBytes(symmetricKeyAsBase64);
                var signingKey           = new SymmetricSecurityKey(keyByteArray);
                var Issuer             = AppSettings.app(new string[] { "Audience", "Issuer" });
                var Audience           = AppSettings.app(new string[] { "Audience", "Audience" });
                var signingCredentials = new SigningCredentials(signingKey, SecurityAlgorithms.HmacSha256);
                var token = new JwtSecurityToken(
                    issuer: Issuer,
                    audience: Audience,
                    claims: claims,
                    expires: DateTime.Now.AddMinutes(1),
                    signingCredentials: signingCredentials
                    );
                //生成token
                var encodedJwt = new JwtSecurityTokenHandler().WriteToken(token);
                //打包返回前台
                var responseJson = new TokenInfoViewModel
                {
                    token      = encodedJwt,
                    expires_in = TimeSpan.FromSeconds(60 * 60).TotalSeconds,
                    token_type = "Bearer"
                };
                return(new ApiResult <TokenInfoViewModel>()
                {
                    status = 200,
                    msg = "认证成功",
                    data = responseJson
                });
            }
            else
            {
                return(new ApiResult <TokenInfoViewModel>()
                {
                    status = 401,
                    msg = "认证失败",
                });
            }
        }
示例#5
0
 /// <summary>
 /// 保存当前用户身份缓存对象
 /// </summary>
 /// <param name="model"></param>
 public void SaveCurrSessionAndUserRole(TokenInfoViewModel tokenInfo, AuthModel model)
 {
     try
     {
         _redis.SetValue($"Token:{tokenInfo.token}", model, tokenInfo.expires_in);
     }
     catch (Exception ex)
     {
         throw new Exception(ex.Message);
     }
 }
        public async Task <ResponseMessage <TokenInfoViewModel> > Login([FromBody] LoginUser model)
        {
            if (ModelState.IsValid)
            {
                var user = await _usersService.Query(x => x.UserName.Equals(model.UserName) && x.Password.Equals(model.Password) && !x.IsRemove);

                if (user != null)
                {
                    var userRole = await _userRoleService.Query(x => x.UserId == user.Id);

                    var roles = await _rolesService.Query(x => x.Id == userRole.RoleId);

                    string  issuer             = Appsettings.app(new[] { "PermissionRequirement", "Issuer" });
                    string  audience           = Appsettings.app(new[] { "PermissionRequirement", "Audience" });
                    string  signingKey         = Appsettings.app(new[] { "PermissionRequirement", "SigningCredentials" });
                    var     keyByteArray       = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(signingKey));
                    var     signingCredentials = new SigningCredentials(keyByteArray, SecurityAlgorithms.HmacSha256);
                    Claim[] claims             = new List <Claim>()
                    {
                        new Claim(JwtRegisteredClaimNames.Jti, user.Id.ToString()),
                        new Claim(ClaimTypes.Name, user.UserName),
                        new Claim(ClaimTypes.Role, roles.RoleName)
                    }.ToArray();
                    PermissionRequirement requirement = new PermissionRequirement(roles.RoleName, issuer, audience, ClaimTypes.Role, signingCredentials, TimeSpan.FromMinutes(60));

                    TokenInfoViewModel token = JwtToken.BuildJwtToken(claims, requirement);
                    return(new ResponseMessage <TokenInfoViewModel>()
                    {
                        Msg = "请求成功",
                        Status = 200,
                        Success = true,
                        ResponseInfo = token
                    });
                }
                return(new ResponseMessage <TokenInfoViewModel>()
                {
                    Msg = "没有该用户",
                    Success = false,
                });
            }
            return(new ResponseMessage <TokenInfoViewModel>()
            {
                Msg = "请求失败",
                Success = false,
            });
        }
        public async Task <IActionResult> Token()
        {
            var contract = _gethClient.Web3.Eth.GetContract(_config.Value.AbiToken, _config.Value.TokenContractAddress);

            try
            {
                var model = new TokenInfoViewModel()
                {
                    Name        = await contract.GetFunction("name").CallAsync <string>(),
                    Symbol      = await contract.GetFunction("symbol").CallAsync <string>(),
                    TotalSupply = await contract.GetFunction("totalSupply").CallAsync <BigInteger>(),
                    Decimals    = await contract.GetFunction("decimals").CallAsync <int>(),
                };

                return(View(model));
            }
            catch (Exception ex)
            {
                return(BadRequest());
            }
        }
 public TokenInfoViewModelTests()
 {
     MockForms.Init();
     Application.Current = new App(isTest: true);
     _tokenInfoModel     = new TokenInfoViewModel(new NetworkService());
 }
示例#9
0
        public JsonResponse UserLogin(LoginRequest loginRequest)
        {
            var model = new TokenInfo();

            try
            {
                if (loginRequest.UserName == null)
                {
                    return(new JsonResponse()
                    {
                        DataModel = "", Message = "手机号码不能为空", State = OperatingState.CheckDataFail
                    });
                }
                else
                {
                    var userinfo = _userinfo.Table.Where(t => t.UserName == loginRequest.UserName).FirstOrDefault();
                    if (userinfo != null && (userinfo.AccountState == (int)UserInfoState.Normal || userinfo.AccountState == null))
                    {
                        var userlogin = _userLogin.Table.Where(t => t.PhoneNo == loginRequest.UserName && t.DeletedState == 1).FirstOrDefault();
                        if (DateTime.Now > userlogin.RegisterTime.AddMinutes(2))
                        {
                            var ISmsService = EngineContext.Current.Resolve <ISmsService>();
                            var send        = ISmsService.SendSms(loginRequest.UserName, "", SmsTemplateState.Login);
                            if (userlogin != null)
                            {
                                var userLogin = new UserLogin()
                                {
                                    Id             = userlogin.Id,
                                    ValidationCode = send.Code,
                                    RegisterTime   = userlogin.RegisterTime,
                                    ValidationCodeExpiredEndTime = userlogin.ValidationCodeExpiredEndTime,
                                    ValidationCodeExpiredMinutes = userlogin.ValidationCodeExpiredMinutes,
                                    DeletedState = userlogin.DeletedState,
                                    DeletedTime  = userlogin.DeletedTime
                                };
                                _userLogin.Update(userLogin);
                            }
                            else
                            {
                                var userLogin = new UserLogin()
                                {
                                    PhoneNo      = loginRequest.UserName,
                                    RegisterTime = DateTime.Now,
                                    ValidationCodeExpiredMinutes = 2,
                                    ValidationCodeExpiredEndTime = DateTime.Now.AddMinutes(2),
                                    ValidationCode = send.Code
                                };
                                _userLogin.Insert(userLogin);
                            }
                        }
                        else
                        {
                            return(new JsonResponse()
                            {
                                DataModel = "", Message = "验证码过于频繁,两分钟后再发送", State = OperatingState.CheckDataFail
                            });
                        }


                        var IsExists = _userLogin.Table.Any(t => t.ValidationCode == loginRequest.VerificationCode);
                        if (IsExists)
                        {
                            //调用token接口,存放cookie
                            var userid       = _userinfo.Table.Where(t => t.UserName == loginRequest.UserName).Select(t => t.Id).FirstOrDefault();
                            var tokenService = EngineContext.Current.Resolve <ITokenService>();
                            var tokenInfo    = tokenService.GenerateToken(new GenerateTokenRequest
                            {
                                UserId = userid,
                                IsApp  = loginRequest.IsApp
                            });
                            var tokenInfoViewModel = new TokenInfoViewModel()
                            {
                                UserId  = userid,
                                Message = tokenInfo.Message,
                                Token   = tokenInfo.Token,
                                Success = tokenInfo.Success
                            };

                            return(new JsonResponse()
                            {
                                DataModel = tokenInfoViewModel, State = OperatingState.Success, Message = "成功"
                            });
                        }
                        else
                        {
                            return(new JsonResponse()
                            {
                                DataModel = "", Message = "验证码错误", State = OperatingState.CheckDataFail
                            });
                        }
                    }
                    else
                    {
                        return(new JsonResponse()
                        {
                            DataModel = "", Message = "手机号异常或不存在", State = OperatingState.CheckDataFail
                        });
                    }
                }
            }
            catch (Exception e)
            {
                return(new JsonResponse()
                {
                    DataModel = "", Message = "错误" + e.Message.ToString(), State = OperatingState.CheckDataFail
                });
            }
        }