【问题标题】:How to set a permission for each user request in c# web services如何在c# web services中为每个用户请求设置权限
【发布时间】:2019-07-02 22:03:39
【问题描述】:

目前我正在开发用户可以保存和检索文档的 DMS 项目。 现在我想在服务级别为每个用户设置一个权限。现在我能够捕获每个用户请求,其中我获得了请求、用户名和他的卷、用户 ID 的链接。假设我有三个角色,一个是拥有所有权限的管理员,第二个角色是主管。所以主管可以创建一个用户并分配部门来分配它使用的部门,即项目/分配部门。第三卷是文员,我想限制创建用户,但他可以访问部门部分的部门列表,而不是用户。显示部门列表我使用相同的请求链接,即项目/分配部门。那么如何处理这种情况。 :(

将每个滚动特定链接存储到表中然后检查每个请求是否很好???

这是我的结构。

 public class IdentityBasicAuthenticationAttribute : Attribute, 
  IAuthenticationFilter
     {
          public string Realm { get; set; }

         public async Task AuthenticateAsync(HttpAuthenticationContext context, CancellationToken cancellationToken)
        {

        HttpRequestMessage request = context.Request;

        if (context.Request.RequestUri.LocalPath == "/Login/UserLogin")
        {
            return; 
        }
        // here i am catching the each request from which i am getting the user name,roll and user id.

     }
 }

和控制器

public class ItemController : ApiController
{
     //item/assigndepartment
    [HttpPost]
    public CategoryList assigndepartment(Departments dept)
    {
        catList = _itemsModel.assigndepartment(dept);
        return catList;
    }

}

和模型

  public class ItemModel
     {

    publiv void assigndepartment()
       { 

        \\ DB Logic

       }
  }

【问题讨论】:

    标签: c# web-services


    【解决方案1】:

    如果您正在构建 RESTful API,您应该对 item/assigndepartment 使用 GET 和 POST 方法。您可以将控制器中的两个操作限制为各自的角色。

    如果您正在构建 web 应用程序,您可以创建部分视图或视图组件,并根据用户角色呈现每个组件。

    【讨论】:

    • 感谢您的宝贵回复。我正在构建 RESTful API。是他们将各自角色的链接存储在数据库中的唯一方法吗?然后检查相应的链接是否具有该特定角色的权限?还有其他方法吗?
    • 不,处理此问题的正确方法是使用 ASP.NET Identity。您可以使用带有角色参数的“授权”过滤器来限制对特定角色的访问。查看这篇文章here
    • 在我的应用程序中,我有多个功能,例如用户,我们无法在其中创建用户和部门,我们可以在其中创建部门。在用户功能中,我限制主管创建用户(在用户功能中,我们可以使用 user/ALLdepartmentList 链接分配部门,因此我限制此链接的主管)但主管可以访问部门功能,在该功能中他可以看到部门以显示部门我正在使用相同的链接 user/ALLdepartmentList 用户中使用的相同链接,所以我想授予主管查看部门列表的相同链接的权限
    猜你喜欢
    • 2016-10-18
    • 2019-04-04
    • 1970-01-01
    • 2019-04-05
    • 2021-07-16
    • 2012-06-30
    • 1970-01-01
    • 2020-09-11
    • 1970-01-01
    相关资源
    最近更新 更多