Back to top

Identity를 이용한 로그인

작성날짜 2025/03/31

Program.cs

builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
    .AddCookie(options =>
    {
        options.Cookie.Name = "auth_token"; //쿠키 이름
        options.LoginPath = "/login"; // 로그인 페이지
        options.Cookie.MaxAge = TimeSpan.FromMinutes(30); // 쿠키 유효시간, 30분으로 설정
        options.AccessDeniedPath = "/access-denied"; // 거부 페이지
    }); // 인증 서비스 추가
builder.Services.AddCascadingAuthenticationState();
app.UseAuthentication(); // 인증 서비스 사용


/login

// 아이디, 패스워드 입력 받아서 검사 성공 시

var claims = new List<Claim> // 인증된 사용자의 정보들
{
    new Claim(ClaimTypes.Name, Model.UserName), // 사용자의 이름
    new Claim(ClaimTypes.Role, userAccount.Role) // 사용자의 역할
};


var identity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme); // 인증 정보
var principal = new ClaimsPrincipal(identity); // 유저 정보
await HttpContext.SignInAsync(principal); // 유저 정보로 로그인


로그인 부분에서 Claim, ClaimsIdentity, ClaimsPrincipal이라는 처음 보는 클래스가 등장해서 이 글이 이해하는데 도움이 됐다. 쉽게 말해 Claim은 개별 정보(이름, 역할 등), ClaimsIdentity는 인증 정보(일반 사용자 계정, 관리자 계정), ClaimsPrincipal은 사용자가 된다.


관련글

Aspnet Core에서 EntityFramwork를 활용해 MySql연결하기
Identity를 이용한 로그인
    An unhandled error has occurred. Reload 🗙