ASP.NET/ASP.NET Core

[ASP.Net Core] Authenticate 와 Authorize User - 사용자 인증과 권한 - Identity Entity Framework Core

http://portfolio.wonpaper.net 2023. 2. 28. 05:50

기존에 포스팅했던 

[ASP.Net Core] Identity Entity FrameworkCore - 회원가입/로그인/로그아웃 예제

 

[ASP.Net Core] Identity Entity FrameworkCore - 회원가입/로그인/로그아웃 예제

ASP.Net Core 상에서 회원가입/로그인/로그아웃 라이브러리를 EF Core 형태로 별도로 제공한다. 이러한 Identity 를 간단한 예제와 함께 확인해 보았다. [전체 예제 소스] https://github.com/wonpaper/IdentityMVC_Lo

wonpaper.tistory.com

 

Identity Entity FrameworkCore - 회원가입/로그인/로그아웃 예제 와 연장선 상에 있는 내용이다. 

어렵지 않고 아주 간단한내용이다.

 

로그인처리하면 Authenticate 인증이 되었다는 것이고, Authorize특정한 액션메소드나 컨트롤을 이용할 수 있는 권한을 부여한다는 것이다.

 

상기 포스팅과 비교하면서 아래 소스내용을 참고 하면 이해가 될 것이다.

 

[ /Controllers/HomeController.cs ] 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
using IdentityMVCExam.Models;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Authorization.Infrastructure;
using Microsoft.AspNetCore.Mvc;
using System.Diagnostics;
 
namespace IdentityMVCExam.Controllers
{
    public class HomeController : Controller
    {
        private readonly ILogger<HomeController> _logger;
 
        public HomeController(ILogger<HomeController> logger)
        {
            _logger = logger;
        }
 
        // 권한없이 모든 사람 이용가능
        [AllowAnonymous]
        public IActionResult Index()
        {
            return View();
        }
 
        // Manager 권한이 있는 사람만
        [Authorize(Roles = "Manager")]
        public IActionResult Privacy()
        {
            return View();
        }
 
     }
 
}
cs

 

위의 소스를 보면 [AllowAnonymous] 처럼 누구나 접근가능한 권한을 준다는 것이고,

 

[Authorize(Roles = "Manager")] 는 해당 액션 메소드에 접근시에는 Manager Role 역할이 있어야 실행이 가능하다는 말이다. 만약 이러한 권한이 없다면 앞전의 포스팅 소스에 명기되어 있던 

 

[Program.cs] 내에

builder.Services.ConfigureApplicationCookie(opt => {
    opt.LoginPath = "/Security/SignIn";                 // 로그인 처리페이지
    opt.AccessDeniedPath = "/Security/AccessDenied";    // 접근권한 없는 User가 접근할때 처리페이지

});

 

처럼 로그인 페이지로 자동 이동된다.

 

그리고, 이러한 Authorize 는 컨트롤러 제목에도 Annotation 시킬수 있다.