ASP.NET의 간단한 MVC 보안 | 블로그 보안 pt. 2: 권한 및 표시
3단계: 다시 들어가십시오.
따라서 귀하의 애플리케이션은 이제 보안이 강화되어 귀하도 들어갈 수 없습니다.
2개의 다른 함수를 호출하는 메서드로 데이터 서비스를 만들 수 있습니다.
public class DataService
{
/* Any injected services go here!!
Don't forget the constructor!! */
public async Task ManageDataAsync()
{
//Task 1: Seed roles (create and enter into Authorization system
await SeedRolesAsync();
// Task 2 seed a few users into AspNetUsers
await SeedUsersAsync();
}
역할이 없을 때 데이터 서비스를 사용하여 역할을 시드했습니다. (이것은 해당 서비스의 첫 번째 방법입니다)
public async Task SeedRolesAsync()
{
//Are there roles in the system?
if (_context.Roles.Any())
{
return;
}
//Spin through enum and do stuff
foreach (var role in Enum.GetNames(typeof(BlogRole)))
{
//create Role in system for each role
await _roleManager.CreateAsync(new IdentityRole(role));
}
}
BlogRole은 관리자와 중재자가 옵션인 열거형이므로 이제 데이터베이스에 존재하는 2개의 역할이 있습니다.
그런 다음 adminUser를 시드할 수 있습니다.
private async Task SeedUsersAsync()
{
if (_context.Users.Any())
{
return;
}
var adminUser = new BlogUser()
{
Email = "[email protected]",
UserName = "[email protected]",
FirstName = "Admin",
LastName = "Istrator"
//OTHER DATA FOR USER CLASS
};
await _userManager.CreateAsync(adminUser, _configuration["AdminPassword"]);
await _userManager.AddToRoleAsync(adminUser, BlogRole.Administrator.ToString());
}
github에서 비공개로 유지하기 위해 내 관리자 비밀번호가 내 appSettings.json에 있습니다. BlogUser를 사용하여 사용자를 초기화한 곳에서 IdentityUser를 사용할 수도 있습니다.
Program.cs 파일에서 ManageDataAsync가 호출됩니다.
main의 내용은 다음과 같습니다.
public static async Task Main(string[] args)
{
//CreateHostBuilder(args).Build().Run();
var host = CreateHostBuilder(args).Build();
var dataService = host.Services.CreateScope().ServiceProvider.GetRequiredService<DataService>();
await dataService.ManageDataAsync();
host.Run();
}
4단계: 등록되지 않은 대중에게 물건 숨기기
등록되지 않은 새로운 사용자가 내 사이트를 방문하는 경우 액세스가 거부된 페이지로 이동하는 항목을 클릭하지 않았으면 합니다. 제 생각에는 간단한 if 문을 추가하겠습니다.
@if (User.IsInRole("Administrator"))
{
<li class="nav-item">
<a class="nav-link" asp-area="" asp-controller="Blogs" asp-action="Index">Blogs</a>
</li>
<li class="nav-item">
<a class="nav-link" asp-area="" asp-controller="Posts" asp-action="Index">Posts</a>
</li>
}
내부 콘텐츠는 관리자 역할의 사용자에게 표시하려는 내용입니다. if에 ||
를 추가하면 여러 역할을 허용할 수 있으며 else 문을 사용하여 다른 역할에 대해 다른 데이터를 표시할 수 있습니다.
흥미로운 아이디어는 사용자가 프리미엄 사용자가 아닌 경우 구매 페이지로 리디렉션되는 회색 버튼을 제공하여 누락된 항목을 표시하고 업그레이드 옵션을 제공하는 것입니다.
Reference
이 문제에 관하여(ASP.NET의 간단한 MVC 보안 | 블로그 보안 pt. 2: 권한 및 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/sbrevolution5/simple-mvc-security-in-asp-net-blog-security-pt-2-permission-and-display-pmh
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
public class DataService
{
/* Any injected services go here!!
Don't forget the constructor!! */
public async Task ManageDataAsync()
{
//Task 1: Seed roles (create and enter into Authorization system
await SeedRolesAsync();
// Task 2 seed a few users into AspNetUsers
await SeedUsersAsync();
}
public async Task SeedRolesAsync()
{
//Are there roles in the system?
if (_context.Roles.Any())
{
return;
}
//Spin through enum and do stuff
foreach (var role in Enum.GetNames(typeof(BlogRole)))
{
//create Role in system for each role
await _roleManager.CreateAsync(new IdentityRole(role));
}
}
private async Task SeedUsersAsync()
{
if (_context.Users.Any())
{
return;
}
var adminUser = new BlogUser()
{
Email = "[email protected]",
UserName = "[email protected]",
FirstName = "Admin",
LastName = "Istrator"
//OTHER DATA FOR USER CLASS
};
await _userManager.CreateAsync(adminUser, _configuration["AdminPassword"]);
await _userManager.AddToRoleAsync(adminUser, BlogRole.Administrator.ToString());
}
public static async Task Main(string[] args)
{
//CreateHostBuilder(args).Build().Run();
var host = CreateHostBuilder(args).Build();
var dataService = host.Services.CreateScope().ServiceProvider.GetRequiredService<DataService>();
await dataService.ManageDataAsync();
host.Run();
}
등록되지 않은 새로운 사용자가 내 사이트를 방문하는 경우 액세스가 거부된 페이지로 이동하는 항목을 클릭하지 않았으면 합니다. 제 생각에는 간단한 if 문을 추가하겠습니다.
@if (User.IsInRole("Administrator"))
{
<li class="nav-item">
<a class="nav-link" asp-area="" asp-controller="Blogs" asp-action="Index">Blogs</a>
</li>
<li class="nav-item">
<a class="nav-link" asp-area="" asp-controller="Posts" asp-action="Index">Posts</a>
</li>
}
내부 콘텐츠는 관리자 역할의 사용자에게 표시하려는 내용입니다. if에
||
를 추가하면 여러 역할을 허용할 수 있으며 else 문을 사용하여 다른 역할에 대해 다른 데이터를 표시할 수 있습니다.흥미로운 아이디어는 사용자가 프리미엄 사용자가 아닌 경우 구매 페이지로 리디렉션되는 회색 버튼을 제공하여 누락된 항목을 표시하고 업그레이드 옵션을 제공하는 것입니다.
Reference
이 문제에 관하여(ASP.NET의 간단한 MVC 보안 | 블로그 보안 pt. 2: 권한 및 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/sbrevolution5/simple-mvc-security-in-asp-net-blog-security-pt-2-permission-and-display-pmh텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)