Frameworks, Platforms/ASP.Net Core

ASP.Net Core - 페이지(Page), 뷰(View) 접근 권한 설정

라큐브 2023. 5. 10. 14:38

ASP.Net Core에서는 라이저(Razor) 페이지(Page), 뷰(View) 별로 접근할 수 있는 권한 부여(Authorization)를 할 수 있습니다.

1. Identity 서비스 등록

'Program.cs' 클래스에 위치한 WebApplication Bulider에 Identity 서비스(Service)를 등록합니다.

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
    .AddEntityFrameworkStores<ApplicationDbContext>();

2. Identity 정책 및 역할 등록

권한 정책을 사용할 경우에만 사용합니다.

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddAuthorization(options =>
{
    options.AddPolicy("ADMIN", builder => builder
        .RequireRole("ADMIN"));
});

3. AuthorizeAttribute 설정

뷰(View) - 컨트롤러(Controller)

라이저(Razor) 뷰(View)를 이용할 경우 대응하는 컨트롤러에 Authorize Attribute를 적용합니다.

public class HomeController : Controller
{
    [Authorize]
    public IActionResult Index()
    {
        HttpContext.Session.SetString(SessionThemeMode, "Dark");

        return View();
    }
}

페이지(Page) - 페이지 모델(Page Model)

라이저(Razor) 페이지(Page)를 이용할 경우 대응하는 페이지 모듈에 Authorize Attribute를 적용합니다.

[Authorize]
public class Index : PageModel
{
    public void OnGet()
    {
    }
}
AuthorizeAttribut 비고
[AllowAnonymous] 모든 사용자를 통과
[Authorize] 인증된 사용자만 통과
[Authorize(Roles = "역할명")]
특정 역할에 소속된 사용자만 통과
[Authorize(Policy = "권한 정책명")] 특정 정책에 소속된 역할에 등록된 사용자만 통과
반응형