覆盖ASP.NET Core中的User.IsInRole

时间:2016-07-14 14:20:19

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

我有一个MVC 6网站(asp.net core / 5),我需要检查用户是否具有剃刀页面中的特定角色。每当我调用-fno-elide-constructors时,它每次都返回false。如果我只是调用我的RoleRepository它就可以了。

我是否需要在某处覆盖User.IsInRole("{rolename}")功能,或者该方法在ASP.NET Core中是否过时?

到目前为止,这是我的实现:

User.IsInRole()

当我通过授权策略调用它时,这可以正常工作,如下所示:

        if (User.IsInRole("Admin") || User.IsInRole("SuperUser") || User.IsInRole("DataIntegrity"))
        {
            model.IsDataIntegrity = true;
        }

1 个答案:

答案 0 :(得分:0)

更多谷歌搜索以及我发现的对我有用的东西:

Checking login user AuthorizePolicy in Razor page on Asp.Net Core

更具体地说,我需要将IAuthorizationService注入我的视图(或控制器),然后调用AuthorizeAsync方法。

(在视图中)

@inject IAuthorizationService AuthorizationService

...

@if (await AuthorizationService.AuthorizeAsync(User, "PolicyName"))
{
    <p>This paragraph is displayed because you fulfilled PolicyName.</p>
}