如何根据用户的角色检查用户是否有权访问页面

我有一个前端reactjs和后端的 Web 应用程序asp.net core,我想允许根据用户角色访问页面。

我已经在反应中实现了授权,但出于安全目的需要在服务器端执行授权。

我已经尝试过[Authorize(Roles = "Administrator")]但是这不起作用,因为我将控制器(所有用户通用)重用于不同的角色,而且我没有返回视图,因为我正在使用 react,所以我需要帮助来实现授权部分在asp.net core(基于角色)

探戈

如果您真的想为所有角色使用每个用例的一个操作,您可以考虑使用 ControllerBase.HttpContext:

    [HttpGet("[action]")]
    [Authorize(Roles = "Administrator,User")]
    [ProducesResponseType(StatusCodes.Status200OK)]
    [ProducesResponseType(StatusCodes.Status400BadRequest)]
    [ProducesResponseType(StatusCodes.Status401Unauthorized)]
    public async Task<IActionResult> GetSomething()
    {
        var userRoles = this.HttpContext.User.Claims.Where(claim => claim.Type == System.Security.Claims.ClaimTypes.Role).Select(claim => claim.Value).ToList();

        if (!userRoles.Any())
            return Unauthorized();

        return await GetSomethingDependingOnGivenRoles(userRoles);
    }

您也可以使用扩展名:

public static class ControllerBaseExtensions
{
    public static List<string> GetRoles(this ControllerBase controller)
    {
        return controller.HttpContext.User.Claims.Where(claim => claim.Type == System.Security.Claims.ClaimTypes.Role).Select(claim => claim.Value).ToList();
    }
}

所以你可以像这样使用它:

    [HttpGet("[action]")]
    [Authorize(Roles = "Administrator,User")]
    [ProducesResponseType(StatusCodes.Status200OK)]
    [ProducesResponseType(StatusCodes.Status400BadRequest)]
    [ProducesResponseType(StatusCodes.Status401Unauthorized)]
    public async Task<IActionResult> GetSomething()
    {
        var userRoles = this.GetRoles();

        if (!userRoles.Any())
            return Unauthorized();

        return await GetSomethingDependingOnGivenRoles(userRoles);
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

c#-如何检查当前登录的用户是否有权访问Sharepoint 2013中的页面

来自分类Dev

首页> C#>如何检查当前登录的用户是否有权访问Sharepoint 2013中的页面

来自分类Dev

检查用户是否有权访问对象

来自分类Dev

Spring Security-如何检查用户是否有权访问自己的资源?

来自分类Dev

如何编写一个Mixin来检查登录用户是否有权访问某些模型实例

来自分类Dev

检查用户是否有权访问实体的最佳方法是什么

来自分类Dev

检查用户是否有权访问Yii RBAC中的操作

来自分类Dev

检查用户是否有权访问实体的最佳方法是什么

来自分类Dev

Angular-无法获得当前用户的警卫角色来检查他/她是否有权访问受保护的路由

来自分类Dev

有权访问门户的用户列表

来自分类Dev

PHP验证用户有权访问内容

来自分类Dev

列出用户有权访问的文件和目录

来自分类Dev

用户是否有权在/ home / userDir之外写?

来自分类Dev

如何使用Azure DevOps API列出有权访问项目存储库的组/用户?

来自分类Dev

检查用户是否具有权限

来自分类Dev

如何确保我有权访问网站的根页面?

来自分类Dev

是否可以在没有root用户访问权限的情况下更改文件的所有权?

来自分类Dev

是否可以在没有root用户访问权限的情况下更改文件的所有权?

来自分类Dev

如何检查用户在Meteor中是否具有特定角色

来自分类Dev

如何在WSO2 API管理器中获取用户有权访问的所有范围

来自分类Dev

如何检查用户是否属于任何角色?

来自分类Dev

在C#中:如何创建包含控件的元组列表和有权访问此控件的用户列表?

来自分类Dev

如何以编程方式获取有权访问SharePoint中的文件或文件夹的用户和组的列表

来自分类Dev

如何使SSH访问回到我不小心窃取`〜/ .ssh /`所有权的用户?

来自分类Dev

Angular 如何检查此页面是否被用户访问并阻止其他用户访问?

来自分类Dev

检查页面中的用户角色

来自分类Dev

检查页面中的用户角色

来自分类Dev

获取所有有权访问协作的用户/组:BOX API

来自分类Dev

Azure AD B2C选择Web应用程序用户有权访问

Related 相关文章

  1. 1

    c#-如何检查当前登录的用户是否有权访问Sharepoint 2013中的页面

  2. 2

    首页> C#>如何检查当前登录的用户是否有权访问Sharepoint 2013中的页面

  3. 3

    检查用户是否有权访问对象

  4. 4

    Spring Security-如何检查用户是否有权访问自己的资源?

  5. 5

    如何编写一个Mixin来检查登录用户是否有权访问某些模型实例

  6. 6

    检查用户是否有权访问实体的最佳方法是什么

  7. 7

    检查用户是否有权访问Yii RBAC中的操作

  8. 8

    检查用户是否有权访问实体的最佳方法是什么

  9. 9

    Angular-无法获得当前用户的警卫角色来检查他/她是否有权访问受保护的路由

  10. 10

    有权访问门户的用户列表

  11. 11

    PHP验证用户有权访问内容

  12. 12

    列出用户有权访问的文件和目录

  13. 13

    用户是否有权在/ home / userDir之外写?

  14. 14

    如何使用Azure DevOps API列出有权访问项目存储库的组/用户?

  15. 15

    检查用户是否具有权限

  16. 16

    如何确保我有权访问网站的根页面?

  17. 17

    是否可以在没有root用户访问权限的情况下更改文件的所有权?

  18. 18

    是否可以在没有root用户访问权限的情况下更改文件的所有权?

  19. 19

    如何检查用户在Meteor中是否具有特定角色

  20. 20

    如何在WSO2 API管理器中获取用户有权访问的所有范围

  21. 21

    如何检查用户是否属于任何角色?

  22. 22

    在C#中:如何创建包含控件的元组列表和有权访问此控件的用户列表?

  23. 23

    如何以编程方式获取有权访问SharePoint中的文件或文件夹的用户和组的列表

  24. 24

    如何使SSH访问回到我不小心窃取`〜/ .ssh /`所有权的用户?

  25. 25

    Angular 如何检查此页面是否被用户访问并阻止其他用户访问?

  26. 26

    检查页面中的用户角色

  27. 27

    检查页面中的用户角色

  28. 28

    获取所有有权访问协作的用户/组:BOX API

  29. 29

    Azure AD B2C选择Web应用程序用户有权访问

热门标签

归档