public async Task <IActionResult> EmailRegisterAsync([FromBody] User_EmailLoginDto register) { if (await _repositoryWrapper.UserRepository.IsExistEmailAccountAsync(register.Email)) { return(Ok(new { code = 1, msg = "账号已存在!" })); } var user = _mapper.Map <UserInfo>(register); user.IsExistEmail = 1; user.CreateId = 0; user.CreateTime = DateTime.Now; user.NickName = register.Email; user.UpdateTime = DateTime.Now; await _repositoryWrapper.UserRepository.AddAsync(user); if (!await _repositoryWrapper.UserRepository.SaveAsync()) { return(BadRequest()); } User_Role user_Role = new User_Role { RoleId = 2, RoleName = "帮众", UserId = user.Id, UserEmail = user.Email }; await _repositoryWrapper.User_RoleRepository.AddAsync(user_Role); await _repositoryWrapper.User_RoleRepository.SaveAsync(); var roleInfo = await _repositoryWrapper.User_RoleRepository.GetUser_RoleByUserIdAsync(user.Id); List <Claim> claimList = new List <Claim> { new Claim(JwtClaimTypes.Name, user.Id.ToString()), new Claim(JwtClaimTypes.NickName, user.NickName), new Claim(JwtClaimTypes.Email, user.Email), new Claim(JwtClaimTypes.Role, roleInfo.RoleName) }; var key = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(_securityConfigOptions.Key)); SigningCredentials sig = new SigningCredentials(key, SecurityAlgorithms.HmacSha256Signature); var jwtToken = new JwtSecurityToken( issuer: _securityConfigOptions.Issuer, audience: _securityConfigOptions.Audience, claims: claimList, signingCredentials: sig, expires: DateTime.Now.AddHours(3) ); var commonData = await _context.CommonDatas.FirstOrDefaultAsync(m => m.Type == "User"); commonData.Value = commonData.Value + 1; _context.CommonDatas.Update(commonData); await _context.SaveChangesAsync(); DistributedCacheEntryOptions options = new DistributedCacheEntryOptions { SlidingExpiration = TimeSpan.FromHours(1) }; await _distributedCache.SetStringAsync("login_" + user.Id.ToString(), "0", options); LogMessage logMessage = new LogMessage { Content = $" \"{user.NickName}\" 登陆了!", CreateTime = DateTime.Now }; await _context.LogMessages.AddAsync(logMessage); await _context.SaveChangesAsync(); var checkLogin = await _context.CheckLogins.FirstOrDefaultAsync(m => m.UserId == user.Id); if (checkLogin == null) { CheckLogin check = new CheckLogin { UserId = user.Id, Status = 0 }; await _context.CheckLogins.AddAsync(check); } else { checkLogin.Status = 0; _context.CheckLogins.Update(checkLogin); } await _context.SaveChangesAsync(); return(Ok(new { code = 0, msg = "注册成功!", token = new JwtSecurityTokenHandler().WriteToken(jwtToken) })); }
public async Task <IActionResult> EmailLoginAsync([FromBody] User_EmailLoginDto login) { var user = await _repositoryWrapper.UserRepository.EmailLoginAsync(login.Email, login.Password); if (user == null) { return(NotFound()); } var roleInfo = await _repositoryWrapper.User_RoleRepository.GetUser_RoleByUserIdAsync(user.Id); List <Claim> claimList = new List <Claim> { new Claim(JwtClaimTypes.Name, user.Id.ToString()), new Claim(JwtClaimTypes.NickName, user.NickName), new Claim(JwtClaimTypes.Email, user.Email), new Claim(JwtClaimTypes.Role, roleInfo.RoleName) //new Claim(JwtClaimTypes.Role,"管理员"), //new Claim(JwtClaimTypes.Role,"游民") }; var key = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(_securityConfigOptions.Key)); SigningCredentials sig = new SigningCredentials(key, SecurityAlgorithms.HmacSha256Signature); var jwtToken = new JwtSecurityToken( issuer: _securityConfigOptions.Issuer, audience: _securityConfigOptions.Audience, claims: claimList, signingCredentials: sig, expires: DateTime.Now.AddHours(3) ); DistributedCacheEntryOptions options = new DistributedCacheEntryOptions { SlidingExpiration = TimeSpan.FromHours(1) }; await _distributedCache.SetStringAsync("login_" + user.Id.ToString(), "0", options); LogMessage logMessage = new LogMessage { Content = $" \"{user.NickName}\" 登陆了!", CreateTime = DateTime.Now }; await _context.LogMessages.AddAsync(logMessage); await _context.SaveChangesAsync(); var checkLogin = await _context.CheckLogins.FirstOrDefaultAsync(m => m.UserId == user.Id); if (checkLogin == null) { CheckLogin check = new CheckLogin { UserId = user.Id, Status = 0 }; await _context.CheckLogins.AddAsync(check); } else { checkLogin.Status = 0; _context.CheckLogins.Update(checkLogin); } await _context.SaveChangesAsync(); return(Ok(new { code = 0, msg = "登录成功!", token = new JwtSecurityTokenHandler().WriteToken(jwtToken) }));; }