首页 > 解决方案 > 启动类 IsInRole .net 核心

问题描述

我在我的 Startup 类的 ConfigureServices 中工作。我想运行我理解为这种方法的 IsInRole() 以填充操作:

但是,运行:

System.Security.Principal.IPrincipal.IsInRole("BRV_Projects_Edit");

显然不成功,因为 this 指的是接口,而不是实现该接口的实例?

我的问题是,在 ConfigureService 的上下文中,我定义了一个自定义属性,如何访问(注入?)当前用户的 Principal。

标签: c#asp.net-core.net-core

解决方案


根据上面的反馈,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");

推荐阅读