我在Startup类的ConfigureServices内部工作。我想运行IsInRole(),我理解该方法是为了填充Action:
但是,正在运行:
System.Security.Principal.IPrincipal.IsInRole("BRV_Projects_Edit");
显然不是成功的,因为它指的是接口,而不是实现该接口的实例?
我的问题是,在ConfigureService的上下文中,我要定义一个自定义属性,该如何访问(注入?)当前用户的主体。
答案 0 :(得分:0)
根据User.InRole以上的反馈,目前无法在管道中访问,但可以通过创建ActionFilterAttribute来访问。
ActionFilterAttribute使OnActionExecuting(Get User Name on Action Filter)与本帖子极为相似,除了与.net core相关的更改
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (filterContext.Controller is Controller controller)
{
controller.ViewBag.CanEdit = filterContext.HttpContext.User.IsInRole("group1");