asp.net-core - asp.net core RazorPages中如何实现Handler级授权
问题描述
PageModel 的 Authorize 属性是不够的,因为它适用于该 pagemodel 中的所有处理程序。我正在寻找一些自定义授权,可以说“只有 18 岁以上才能访问”,那么如何在 RazorPages(不是 MVC)中实现相同的授权?有什么简洁明了的解决方案吗?
解决方案
目前无法Authorize
在单个 Razor 页面处理程序上使用属性,您可以在此处跟踪功能请求。
作为一种解决方法,您可以手动注入IAuthorizationService
并实施授权:
private readonly IAuthorizationService _authorizationService;
public IndexModel(ILogger<PrivacyModel> logger, IAuthorizationService authorizationService)
{
_logger = logger;
_authorizationService = authorizationService;
}
public async Task OnGet()
{
var isAuthorized = await _authorizationService.AuthorizeAsync(
User, "PolicyName");
if (!isAuthorized.Succeeded)
{
//not pass the authorzation
}
}
并创建策略来检查价值用户的年龄声明是否超过 18 岁,如此处所示。
推荐阅读
- java - 通过 IntelliJ 中的 Tomcat 进行 Jar
- excel - 如何在没有多用户锁定的情况下使用 Excel VBA 应用程序?
- laravel - 单击特定链接时 Laravel 路由错误
- python - 如何将同一数据框中的多个列合并为一个,以数组形式表示?
- c++ - 指针,静态成员函数
- java - 无法填充 JAXB pojo 类以使用工厂方法制作 XML 文件
- typescript - 盖茨比:使用带有 Typescript 的 SASS 模块
- php - Return function results based on condition - PHP
- ios - iOS Swift 导航标题未显示
- ms-word - create a new document from word template with multiple pages using documentformat.openxml