728x90
728x90
참조
- https://learn.microsoft.com/ko-kr/aspnet/core/security/authorization/simple?view=aspnetcore-8.0
[Authorize] 어트리뷰트
- 대상에 대한 액세스를 인증된 사용자만 가능하도록 제한하는 어트리뷰트
- 인증되지 않은 사용자가 접근하는 경우 → 401 Unauthorized 반환
- 인증되었지만, 권한이 없는 사용자가 접근하는 경우 → 403 Forbidden 반환
# 컨트롤러에 대한 액세스를 인증된 사용자로 제한하기
// AccountController 내부의 Login(), Logout() 둘 다 인증된 사용자만 액세스 가능
[Authorize]
public class AccountController : Controller
{
public ActionResult Login()
{
}
public ActionResult Logout()
{
}
}
# 개별 메서드에 대한 액세스를 인증된 사용자로 제한하기
public class AccountController : Controller
{
// Login()은 모든 사용자가 액세스 가능
public ActionResult Login()
{
}
// Logout()은 인증된 사용자만 액세스 가능
[Authorize]
public ActionResult Logout()
{
}
}
# 대상에 대한 액세스를 특정 역할을 가진 인증된 사용자로 제한하기
// "Admin" 역할을 가진 인증된 사용자만 액세스 가능
[Authorize(Roles = "Admin")]
// "Admin" 또는 "Manager" 역할을 가진 인증된 사용자만 액세스 가능
[Authorize(Roles = "Admin,Manager")]
# 특정 정책에 따라 제한하기
// 정책 정의 (Program.cs)
services.AddAuthorization(options =>
{
options.AddPolicy("MinimumAge", policy =>
policy.RequireClaim("Age", "18"));
});
---------
// 해당 정책 내 조건을 만족하는 인증된 사용자만 액세스 가능
[Authorize(Policy = "MinimumAge")]
[AllowAnonymous] 어트리뷰트
- 인증되지 않은 사용자의 액세스를 허용하는 어트리뷰트
- [Authorize]를 무시함
: 컨트롤러에 [Authorize], 특정 메서드에 [AllowAnonymous]가 적용되어 있는 경우, 해당 메서드는 모든 사용자가 액세스 가능
[Authorize]
public class AccountController : Controller
{
// Login()은 모든 사용자가 액세스 가능
[AllowAnonymous]
public ActionResult Login()
{
}
// Logout()은 인증된 사용자만 액세스 가능
public ActionResult Logout()
{
}
}
320x100
반응형
'C#' 카테고리의 다른 글
[C#/Dapper] INSERT · UPDATE · DELETE 쿼리 / 프로시저 실행 (1) | 2024.11.14 |
---|---|
[C#/Dapper] SELECT 쿼리 / 프로시저 실행 (5) | 2024.11.13 |
[C#] 값 형식 (Value types) & 참조 형식 (Reference types) (0) | 2024.10.25 |
[C#/dotnet] 라우팅 (Routing) (4) | 2024.10.25 |
[C#/dotnet] 서버 컨트롤 (0) | 2024.10.24 |