コード例 #1
0
        public ReadUserM Login(string email, string password)
        {
            ReadUserM user = new ReadUserM();

            //비밀번호 검증
            bool verified = userService.VerifyUser(email, password);

            // 비밀번호 검증 완료 시
            if (verified)
            {
                UserT userEntity = userService.GetUserByEmail(email);
                user = mapper.Map <UserT, ReadUserM>(userEntity);

                // 토큰생성
                TokenT authEntity = authService.CreateToken(user);
                TokenM token      = mapper.Map <TokenT, TokenM>(authEntity);
                user.Token = token;
            }
            else
            {
                throw new IncorrectDataException("비밀번호가 올바르지 않습니다.", "비밀번호 오류", LayerID.AuthController);
            }

            logger.Log(LogLevel.Info, string.Format("호출 성공 : {0}", MethodBase.GetCurrentMethod().Name));
            return(user);
        }
コード例 #2
0
        public Response <ReadUserM> ReadUser(string userNo)
        {
            Response <ReadUserM> response = new Response <ReadUserM>();

            UserT     userEntity = userService.GetUser(userNo);
            ReadUserM user       = mapper.Map <UserT, ReadUserM>(userEntity);

            if (user != null)
            {
                response.Result = user;
                response.Status = ((int)HttpStatusCode.OK).ToString();
            }
            else
            {
                throw new NotFoundException("사용자가 존재하지 않습니다.", "사용자 조회 오류", LayerID.UserController);
            }

            logger.Log(LogLevel.Info, string.Format("호출 성공 : {0}", MethodBase.GetCurrentMethod().Name));
            return(response);
        }
コード例 #3
0
        public TokenM RefreshToken(string accessToken, string refreshToken)
        {
            TokenM tokenModel = new TokenM();
            TokenT token      = authService.ReadAccessToken(accessToken, refreshToken);

            DateTime validTo          = new JwtSecurityTokenHandler().ReadJwtToken(accessToken).ValidTo;
            DateTime tokenExpiredTime = CommonHelper.GetDateTime(validTo);

            if (tokenExpiredTime < DateTime.Now)
            {
                UserT     userEntity = userService.GetUser(token.UserNo);
                ReadUserM user       = mapper.Map <UserT, ReadUserM>(userEntity);

                TokenT authEntity = authService.CreateToken(user);
                tokenModel = mapper.Map <TokenT, TokenM>(authEntity);
            }
            else
            {
                throw new BadRequestException("토큰 만료 시간이 유효합니다.", "토큰 오류", LayerID.AuthController);
            }

            logger.Log(LogLevel.Info, string.Format("호출 성공 : {0}", MethodBase.GetCurrentMethod().Name));
            return(tokenModel);
        }
コード例 #4
0
        public TokenT CreateToken(ReadUserM user)
        {
            // authentication successful so generate jwt token
            var tokenHandler    = new JwtSecurityTokenHandler();
            var key             = Encoding.ASCII.GetBytes(AppConfiguration.JwtSecret);
            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject = new ClaimsIdentity(new Claim[]
                {
                    new Claim(ClaimTypes.Sid, user.UserNo)
                }),
                Expires            = DateTime.Now.AddHours(2),
                SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature),
                IssuedAt           = DateTime.Now,
                Audience           = "aud.allthatbts.com",
                Issuer             = "api.allthatbts.com",
            };
            var token = tokenHandler.CreateToken(tokenDescriptor);


            TokenT apiToken = new TokenT()
            {
                UserNo                 = user.UserNo,
                AccessToken            = tokenHandler.WriteToken(token),
                AccessTokenExpireDate  = tokenDescriptor.Expires.Value,
                RefreshToken           = CreateRefreshToken(),
                RefreshTokenExpireDate = DateTime.Now.AddDays(7),
                Scope = null
            };

            // 토큰 DB에 저장
            authRepository.UpsertToken(apiToken);
            apiToken = authRepository.SelectToken(user.UserNo);

            return(apiToken);
        }