Beispiel #1
0
 public async Task <ApplicationBaseResult> Execute(LoginInput input)
 {
     return(await DoAsync(async (x) =>
     {
         //校验用户名重复
         var loginInfo = await _userRepository.GetAsync(new UserExistByNameSpceifications(input.UserName));
         if (loginInfo == null)
         {
             throw new ApplicationException("账号或密码错误,请重试!");
         }
         //检测用户有效性
         loginInfo.CheckLoginState(_common.ShaEncrypt(loginInfo.Id.ToString(), input.Password));
         //生成jwt
         x.Data = _common.GetJwtToken(new{
             Id = loginInfo.Id.ToString(),
             loginInfo.UserName,
             loginInfo.NickName
         });
         _cacheServer.SetCache("Onion.UserLoginInfo." + loginInfo.Id, x.Data, TimeSpan.FromDays(30));
         await _eventBus.PublishAsync("Onion.User.LoginHandle", new UserLoginEvent(loginInfo.NickName, DateTime.Now));
     }));
 }