c# - 用户向服务器发送请求时查找当前控制器名称和操作名称
问题描述
我为授权用户创建一个属性。对于授权用户,我在使用向他们发送请求时需要Controller
姓名和姓名。Action
例如 :
这是我的行动:
[HttpPost]
[Pemission("Add News Role")]
public async Task<ReturnResult> AddRole(RoleDto model, CancellationToken token)
{
if (ModelState.IsValid)
{
var result = await mediator.Send(new CreateRoleCommand { RoleName = model.Name }, token);
if (result.Success)
{
return Ok();
}
return BadRequest(result.ErrorMessage);
}
return BadRequest();
}
我需要在这个属性中编写授权代码Pemission
。
[AttributeUsage(AttributeTargets.All)]
public sealed class PemissionAttribute : Attribute
{
private readonly string _name;
public PemissionAttribute(string name)
{
_name = name;
}
public string Name => _name;
public async Task FindControllerName()
{
}
}
现在我需要在这个 Attribute中找到Controller
并命名。Action
我怎么能找到他们???
解决方案
更改为也从IAuthorizationFilter继承,并且在 OnAuthorization 方法中,您可以检索您正在查找的路由数据的信息。
using Microsoft.AspNetCore.Mvc.Filters;
using System;
public sealed class PemissionAttribute : Attribute, IAuthorizationFilter
{
private readonly string _name;
public PemissionAttribute(string name)
{
_name = name;
}
public string Name => _name;
public void OnAuthorization(AuthorizationFilterContext context)
{
var action = context.RouteData.Values["action"];
var controller = context.RouteData.Values["controller"];
}
}
推荐阅读
- javascript - 从 HTML 生成 pdfmake 页眉和页脚:不完整的渲染
- python - pycharm中带有bootstrap 5的阴影
- json - gjson:将 json 数组转换为切片
- kotlin - IntelliJ IDEA Kotlin 项目未解决参考:apache
- ruby - 在 Middleman 静态站点生成器中的其他页面上使用页面的 yield 内容
- python - 通过 python 在 Google API 电子表格上使用自动完成功能
- python - 软件 (BornAgain) 无法编译,给出错误“未声明的 size_t”
- javascript - 如何在 contenteditable div 上获取光标位置?
- wordpress - 在 Wordress 中,一位作者无法看到其他作者通过媒体库上传的图片
- php - 在 docker 上安装 Gd 扩展