[Blazor] Roles
페이지 정보
작성자 sbLAB 댓글 0건 조회 9,306회 작성일 21-09-23 21:00본문
가입계정에 권한(역할 Roles)주고 권한별 제어
Blazor 에서 자동생성된 테이블
1. aspnetroles 테이블에서 역할 Id를 정한다.
2. aspnetuserroles 테이블에서 aspnetusers 테이블(회원가입 후 회원테이블)의 Id값에 대한 Role를 추가(결정) 한다.
3. 회원가입하면 aspnetusers 테이블에 회원가입 입력값이 추가된다.
[권한(역할)별 페이지 제어]
[Startup.cs]
public void ConfigureServices(IServiceCollection services)
{
services.AddDefaultIdentity<IdentityUser>() //login
.AddRoles<IdentityRole>() //Role based Authorization
.AddEntityFrameworkStores<AppDbContext>(); //login
}
[Razor 페이지에서 사용] - 아래처럼 역할별 화면구성을 할수 있음.
@page "/"
<AuthorizeView Roles="Admin">
<Authorized>
<SurveyPrompt Title="Admin" />
</Authorized>
<NotAuthorized>
<SurveyPrompt Title="Admin Auth None" />
</NotAuthorized>
</AuthorizeView>
<AuthorizeView Roles="Member">
<Authorized>
<SurveyPrompt Title="Member" />
</Authorized>
<NotAuthorized>
<SurveyPrompt Title="Member Auth None" />
</NotAuthorized>
</AuthorizeView>
<AuthorizeView Roles="Admin,Member">
<Authorized>
<SurveyPrompt Title="Admin_Member" />
</Authorized>
<NotAuthorized>
<SurveyPrompt Title="Admin_Member Auth None" />
</NotAuthorized>
</AuthorizeView>
메인레이아웃(MainLayout.razor) 에서 아래처럼 Admin 메뉴구성도 가능
@inherits LayoutComponentBase
<div style="background-image: none;background-color: #3b5780;" class="sidebar">
<NavMenu />
</div>
<div class="main">
<AuthorizeView Roles="Admin">
<Authorized>
<div class="top-row px-4 fixed-top">
<!--- fixed-top 필요: 상단메뉴바 위치고정(본문 @Body 부분과 분리) -->
<LoginDisplay />
</div>
</Authorized>
</AuthorizeView>
<div class="content px-2">
@Body
</div>
</div>
<Spinner></Spinner>
<BlazoredToasts />
<RadzenNotification />
<RadzenDialog />
<RadzenNotification />
<RadzenContextMenu />
<RadzenTooltip />
[아래처럼 페이지 자체 도입부에 역할(권한) 체크하게 할수도 있다.]
@page "/admin"
@attribute [Authorize(Roles ="Admin")]
..
..
※aspnetuserroles 에 SQL로 직접접근하여 각 회원계정별 역할을 추가,수정,삭제 할 수 있다.
https://www.c-sharpcorner.com/article/role-based-authorization-in-blazor/
https://blazorhelpwebsite.com/ViewBlogPost/21
댓글목록
등록된 댓글이 없습니다.