/// <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); }
/// <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); }
/// <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); }
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 = "认证失败", }); } }
/// <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()); }
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 }); } }