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 = "권한 정책명")] | 특정 정책에 소속된 역할에 등록된 사용자만 통과 |
반응형