c# - 启动类 IsInRole .net 核心
问题描述
我在我的 Startup 类的 ConfigureServices 中工作。我想运行我理解为这种方法的 IsInRole() 以填充操作:
但是,运行:
System.Security.Principal.IPrincipal.IsInRole("BRV_Projects_Edit");
显然不成功,因为 this 指的是接口,而不是实现该接口的实例?
我的问题是,在 ConfigureService 的上下文中,我定义了一个自定义属性,如何访问(注入?)当前用户的 Principal。
解决方案
根据上面的反馈,User.InRole 在管道中此时无法访问,但可以通过创建 ActionFilterAttribute 进行访问。
ActionFilterAttribute 使 OnActionExecuting, Get User Name on Action Filter与这篇文章非常相似,除了与 .net 核心相关的更改
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (filterContext.Controller is Controller controller)
{
controller.ViewBag.CanEdit = filterContext.HttpContext.User.IsInRole("group1");
推荐阅读
- google-chrome - 如何在python中使用autoit单击某些文本或坐标
- google-tag-manager - 谷歌标签管理器阻止 Turbolinks 工作
- c++ - 使用 CMake 构建 ffplay
- r - 遍历文件,划分两个变量并提取结果,包括使用原始文件名称的标识符列
- sql-server - 如何使用存储过程将一行数据添加到一个表,将多行数据添加到另一个表-Microsoft SQL Server Management Studio
- git - git reset --hard 在新的 repo 上暂存后
- python - 有没有办法访问通过python连接到PC的手机中的文件?
- tiddlywiki - 如何制作与其他提琴手的缩略链接?
- apache-spark - 巨大 Spark 数据框的 GroupBy
- javascript - 为什么当我附加一个元素时它没有样式?