示例#1
0
        private async Task <JwtSecurityToken> GenerateJwtToken(string email, TunnelRUser user)
        {
            var claims = new List <Claim>
            {
                new Claim(JwtRegisteredClaimNames.Sub, email),
                new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
                new Claim(ClaimTypes.NameIdentifier, user.Id),
                new Claim(ClaimTypes.Name, user.UserName),
            };

            var roles = await _userManager.GetRolesAsync(user);

            claims.AddRange(roles.Select(role => new Claim(ClaimsIdentity.DefaultRoleClaimType, role)));

            var key     = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["JwtKey"]));
            var creds   = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
            var expires = DateTime.Now.AddDays(Convert.ToDouble(_configuration["JwtExpireDays"]));

            return(new JwtSecurityToken(
                       _configuration["JwtIssuer"],
                       _configuration["JwtIssuer"],
                       claims,
                       expires: expires,
                       signingCredentials: creds
                       ));
        }
示例#2
0
        public async Task <object> Token()
        {
            TunnelRUser user = await _userManager.FindByNameAsync(HttpContext.User.Identity.Name);

            await _signInManager.SignInAsync(user, false);

            return((await GenerateJwtToken(user.UserName, user)).CreateTokenString());
        }
示例#3
0
        public async Task <object> Register([FromBody] RegisterDto model)
        {
            var user = new TunnelRUser
            {
                UserName = model.UserName,
            };
            var result = await _userManager.CreateAsync(user, model.Password);

            if (result.Succeeded)
            {
                await _signInManager.SignInAsync(user, false);

                await _userManager.AddToRoleAsync(user, "Player");

                return((await GenerateJwtToken(model.UserName, user)).CreateTokenString());
            }

            return(BadRequest(result.Errors.First().Description));
        }
示例#4
0
 public static void LogMacAddress(this TunnelRContext context, TunnelRUser user, PhysicalAddress macAddress)
 {
     context.MagAddressLog.Add(new MacAddressLog(user, macAddress.ToString()));
     context.SaveChanges();
 }