Пример #1
0
        public async Task <IActionResult> Login(UserForLoginDto UserForLoginDto)
        {
            var user = await _repo.Login(UserForLoginDto.Username.ToLower()
                                         , UserForLoginDto.Password.ToLower());

            if (user != null)
            {
                //Generate and Send JWT Token to Client.
                var claims = new[] {
                    new Claim(type: ClaimTypes.NameIdentifier, value: user.Id.ToString()),
                    new Claim(type: ClaimTypes.Name, value: user.Username)
                };

                var key = new SymmetricSecurityKey(
                    Encoding.UTF8.GetBytes(_config.GetSection("AppSettings:Token")
                                           .Value));

                var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature);


                var tokenDescriptor = new SecurityTokenDescriptor
                {
                    Subject            = new ClaimsIdentity(claims),
                    Expires            = DateTime.Now.AddDays(1),
                    SigningCredentials = creds
                };

                var tokenHandler = new JwtSecurityTokenHandler();

                var token = tokenHandler.CreateJwtSecurityToken(tokenDescriptor);

                return(Ok(new
                {
                    token = tokenHandler.WriteToken(token),
                    currentUser = _mapper.Map <UserForListDto>(user)
                }));
            }

            return(Unauthorized());
        }
Пример #2
0
        public async Task <IActionResult> Login(LoginDto user)
        {
            User u = await _repo.Login(user.Name, user.Password);

            // Unauthorized();
            if (u == null)
            {
                return(BadRequest("Cannot log in"));
            }

            //create JWT, claims, credential, tokenDescriptor
            var alist  = new string[] { "apple", "orange" };
            var claims = new[]
            {
                new Claim(ClaimTypes.NameIdentifier, u.Id.ToString()),
                new Claim(ClaimTypes.Name, u.Name),
                new Claim(ClaimTypes.UserData, string.Join(",", alist))
            };
            var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config.GetSection("AppSettings:Token").Value));
            // hash
            var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature);
            // issue token
            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject            = new ClaimsIdentity(claims),
                Expires            = DateTime.Now.AddDays(1),
                SigningCredentials = creds,
                Issuer             = "google"
            };

            // display token
            var tokenHandler = new JwtSecurityTokenHandler();
            var token        = tokenHandler.CreateJwtSecurityToken(tokenDescriptor);

            return(Ok(new
            {
                issueToken = tokenHandler.WriteToken(token)
            }));
        }
Пример #3
0
        private AuthorizationTokensModel BuildAccessTokenModel(User user)
        {
            var tokenHandler = new JwtSecurityTokenHandler();
            //todo: redo to generate token using private key
            var key             = Encoding.ASCII.GetBytes(_configuration.GetSection("AppSettings:Token").Value);
            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject = new ClaimsIdentity(new[]
                {
                    new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()),
                    new Claim(ClaimTypes.Name, user.Username),
                }),
                Expires            = DateTime.Now.AddHours(8),
                SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha512Signature)
            };

            var token = tokenHandler.CreateJwtSecurityToken(tokenDescriptor);

            return(new AuthorizationTokensModel
            {
                AccessToken = tokenHandler.WriteToken(token),
                ExpiresAt = token.ValidTo
            });
        }
Пример #4
0
        public async Task <IActionResult> Login(UserLoginDto userLoginDto)
        {
            var userFromRepo = await _repo.Login(userLoginDto.Username, userLoginDto.Password);

            if (userFromRepo == null)
            {
                return(Unauthorized());
            }


            var claims = new[]
            {
                new Claim(ClaimTypes.NameIdentifier, userFromRepo.Id.ToString()),
                new Claim(ClaimTypes.Name, userFromRepo.Username)
            };

            var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration.GetSection("AppSettings:Token").Value));

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

            var tokenDescripton = new SecurityTokenDescriptor()
            {
                Subject            = new ClaimsIdentity(claims),
                Expires            = DateTime.Now.AddDays(1),
                SigningCredentials = credentials
            };

            var tokenHandler = new JwtSecurityTokenHandler();

            var token = tokenHandler.CreateJwtSecurityToken(tokenDescripton);

            return(Ok(new
            {
                token = tokenHandler.WriteToken(token)
            }));
        }