54 lines
2.1 KiB
C#
54 lines
2.1 KiB
C#
using System.ComponentModel.DataAnnotations;
|
|
using System.ComponentModel.DataAnnotations.Schema;
|
|
|
|
namespace Back.Program.Common.Model
|
|
{
|
|
public class JwtSettings
|
|
{
|
|
public string SecretKey { get; set; }
|
|
public string Issuer { get; set; }
|
|
public string Audience { get; set; }
|
|
public int ExpiryMinutes { get; set; }
|
|
public int ClockSkewMinutes { get; set; }
|
|
public int RefreshTokenExpiryDays { get; set; }
|
|
}
|
|
|
|
|
|
[Table("refresh_token")]
|
|
public class RefreshToken
|
|
{
|
|
[Key]
|
|
[Required(ErrorMessage = "필수 항목 누락")]
|
|
public string uid { get; set; }
|
|
public string refresh_token { get; set; }
|
|
public DateTime create_Date { get; set; }
|
|
public DateTime expire_date { get; set; }
|
|
|
|
// 이건 로그아웃시에 폐기 시킬예정이니 그떄 변경하는걸로 합시다.
|
|
public DateTime? revoke_Date { get; set; }
|
|
}
|
|
|
|
public class ValidateToken
|
|
{
|
|
public string token { get; set; }
|
|
public string refresh { get; set; }
|
|
public string uid { get; set; }
|
|
}
|
|
}
|
|
|
|
/*
|
|
"""
|
|
토큰 동작 관련
|
|
다시 물어보자 토큰 로직 관련해서 일단은 로그인을 예로 들면
|
|
1. 로그인을 진행한다.
|
|
2. 회원이 DB에 정상적으로 존재한다.
|
|
3. 엑세스 토큰과 리프레시 토큰을 생성한다.
|
|
4. 엑세스 토큰은 클라이언트로 리프래시 토큰은 서버에 저장하고 클라이언트로도 보낸다.
|
|
5. (상황1) 시간이 경과해 엑세스 토큰의 시간이 경과했다.
|
|
6. (상황2) 회원 정보에 대한 접근이 필요한 동작을 수행한다.
|
|
7. 엑세스 토큰과 리프레시 토큰을 서버로 전송한다.
|
|
8. 엑세스 토큰이 만료가 되었음이 확인이 되면 리프레시 토큰으로 새 엑세스를 만들기 위해 리프레시 토큰을 확인한다.
|
|
9. 리프레시 토큰이 만료가 되지 않았다면 리프레시 토큰을 토대로 엑세스 토큰을 생성한다.
|
|
10. 생성된 엑세스 토큰을 가지고 상황2의 동작을 수행하고 엑세스 토큰을 반환한다.
|
|
"""
|
|
*/ |