public class AdminController : Controller
{
public IActionResult Index()
{
return View();
}
public IActionResult SuperAdmin()
{
return View();
}
}
public void ConfigureServices(IServiceCollection services)
{
// 添加身份验证
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
options.LoginPath = "/Account/Login";
options.AccessDeniedPath = "/Account/AccessDenied";
});
// 添加授权服务
services.AddAuthorization(options =>
{
// 添加超级管理员策略
options.AddPolicy("SuperAdminPolicy", policy =>
{
policy.RequireClaim("IsSuperAdmin");
});
});
services.AddControllersWithViews();
}
其中,在AddPolicy中添加一个超级管理员策略,要求具有IsSuperAdmin声明的用户才能访问超级管理员页面。
[Authorize(Policy = "SuperAdminPolicy")]
public IActionResult SuperAdmin()
{
return View();
}
public async Task Login(LoginViewModel model, string returnUrl = null)
{
// 验证用户身份信息
var result = await _signInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, lockoutOnFailure: false);
if (result.Succeeded)
{
// 获取当前用户信息
var user = await _userManager.FindByNameAsync(model.UserName);
if (user != null)
{
// 设置IsSuperAdmin声明为true
var claims = new List
{
new Claim("IsSuperAdmin", "true")
};
await _userManager.AddClaims