Beispiel #1
0
        public async Task <string> GenerateTokenAsync(ADUserT user)
        {
            var claims = new[]
            {
                new Claim(JwtRegisteredClaimNames.Sub, user.LoginName),
                new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString("N")),
                new Claim(JwtRegisteredClaimNames.Iat, DateTime.Now.ToUniversalTime().ToString(CultureInfo.InvariantCulture), ClaimValueTypes.Integer64),
                //new Claim(JwtRegisteredClaimNames.Email, user.Email),
                //用户名
                new Claim(ClaimTypes.Name, user.LoginName),
                //角色
                new Claim(ClaimTypes.Role, user.Role)
            };

            var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_jwtBearerOption.SecurityKey));

            var credentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);

            var token = new JwtSecurityToken(
                _jwtBearerOption.Issuer,
                _jwtBearerOption.Audience,
                claims,
                expires: DateTime.Now.AddMinutes(_jwtBearerOption.AccessExpiration),
                signingCredentials: credentials
                );

            return(await Task.FromResult(new JwtSecurityTokenHandler().WriteToken(token)));
        }
Beispiel #2
0
        public async Task <ActionResult> Put([FromBody] ADUserT value)
        {
            if (string.IsNullOrWhiteSpace(value.LoginPwd))
            {
                return(BadRequest("Invalid password."));
            }
            value.Role         = ADUserT.GetRole(value.Role);
            value.LoginPwdHash = PasswordStorage.CreateHash(value.LoginPwd);
            var user = await _userRep.FindEntityAsync <ADUserT>(x => x.LoginName == value.LoginName);

            if (user != null)
            {
                //user = MapperHelper<ADUserT, ADUserT>.MapTo(value);
                //user = _mapper.Map<ADUserT>(value);
                await _userRep.UpdateAsync(value);

                return(Ok());
            }

            await _userRep.InsertAsync(value);

            return(Ok());
        }