コード例 #1
0
        private async Task <JwtSecurityToken> GenerateJWT(VehicleTrackingUser vehicleTrackingUser)
        {
            var key     = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["Tokens:Key"]));
            var creds   = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
            var expires = DateTime.UtcNow.AddMinutes(double.Parse(_configuration["Tokens:ExpiryMinutes"])).ToUniversalTime();

            var claims = new List <Claim>
            {
                new Claim(JwtRegisteredClaimNames.Sub, vehicleTrackingUser.Email),
                new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
                new Claim(ClaimTypes.NameIdentifier, vehicleTrackingUser.Id.ToString())
            };

            //Assign Roles
            var roles = await _userManager.GetRolesAsync(vehicleTrackingUser);

            foreach (var r in roles)
            {
                claims.Add(new Claim(ClaimTypes.Role, r));
            }

            return(new JwtSecurityToken(
                       _configuration["Tokens:Issuer"],
                       _configuration["Tokens:Audience"],
                       claims,
                       expires: expires,
                       signingCredentials: creds));
        }
コード例 #2
0
        public static async Task SeedData(UserManager <VehicleTrackingUser> userManager, RoleManager <IdentityRole <Guid> > roleManager)
        {
            //Add role
            var initRole = new string [] { "User", "Admin" };

            foreach (var role in initRole)
            {
                var isExisted = await roleManager.RoleExistsAsync(role);

                if (!isExisted)
                {
                    await roleManager.CreateAsync(new IdentityRole <Guid>(role));
                }
            }

            //Add VehicleTrackingUser
            var user = await userManager.FindByEmailAsync("*****@*****.**");

            if (user == null)
            {
                user = new VehicleTrackingUser()
                {
                    UserName = "******",
                    Email    = "*****@*****.**"
                };
                await userManager.CreateAsync(user, "12345");
            }

            await userManager.AddToRoleAsync(user, "User");

            //Add Admin
            var admin = await userManager.FindByEmailAsync("*****@*****.**");

            if (admin == null)
            {
                admin = new VehicleTrackingUser()
                {
                    UserName = "******",
                    Email    = "*****@*****.**"
                };
                await userManager.CreateAsync(admin, "12345abc");
            }

            await userManager.AddToRoleAsync(admin, "Admin");
        }
コード例 #3
0
        public async Task <string> Register(RegisterRequest resigerInfo)
        {
            var user = new VehicleTrackingUser()
            {
                UserName = resigerInfo.UserName,
                Email    = resigerInfo.Email
            };

            var createResult = await _userManager.CreateAsync(user, resigerInfo.Password);

            if (!createResult.Succeeded)
            {
                throw new CreateUserFailException(ErrorCode.E003);
            }

            //Set default Role is vehicleTrackingUser
            await _userManager.AddToRoleAsync(user, "VehicleTrackingUser");

            var token = await GenerateJWT(user);

            return(new JwtSecurityTokenHandler().WriteToken(token));
        }