比方说,我创建了包含所有引用管理页面的管理控制器。 在每个控制器中,我都会验证用户是admin以及其他验证, 看起来我的代码重复了一次,我想在管理器中输入任何路由并进行这些验证时使本地事件发生,我知道我可以声明一个执行这些验证的函数,但是我又需要在AdminController中的任何方法上设置她
感谢助手。
管理控制器方法示例:
public IActionResult References()
{
var user = Systems.Users.GetUser(HttpContext);
if (Systems.Users.IsValid(user) &&
Systems.Users.IsPermission(user, Models.User.EUPermissions.Admin))
return View();
return View("Error404");
}
答案 0 :(得分:1)
您可以在Startup.cs ConfigureServices()
方法中执行以下操作:
services.AddAuthorization(options =>
{
options.AddPolicy("AdminAccess", policy => policy.RequireRole("Admin"));
});
现在在您的控制器中,您可以使用以下内容:
[Authorize(Policy = "AdminAccess")]
public class AdministratorController : Controller
{
public IActionResult Index()
{
return View();
}
}
这样,您不必编写代码来检查访问。 .Net核心促进了依赖项注入和其他扎实的原则,并且您没有编写的方法要承担多个责任。