Exemple #1
0
        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) }));
        }
Exemple #2
0
        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) }));;
        }