用户&角色声明管理企业级权限

时间:2017-12-30 06:15:04

标签: c# asp.net-mvc

我有Business.API,我想对每个方法应用用户权限。我正在使用:

Sub test()
    Dim vDB, vR()
    Dim i As Long, n As Long
    Dim s As String
    vDB = Range("g1", Range("g" & Rows.Count).End(xlUp))
    n = UBound(vDB, 1)
    ReDim vR(1 To n, 1 To 2)

    For i = 1 To n
        s = vDB(i, 1)
        vR(i, 1) = Split(s, "/")(1)
        vR(i, 2) = Split(s, "X")(1)
    Next i
    Range("h1").Resize(n, 2) = vR

End Sub

每个控制器上都有大量的权限,用户可能会根据管理员的喜好拥有浮动数量的角色。

第一个问题是限制对每个内容的访问。例如我对新闻有限制;用户只能看到大约5类新闻,并且他被限制访问“非秘密”新闻。最糟糕的情况是愤怒限制(例如禁止用户在一段时间内或特定新闻中访问某些新闻)

在上述权限集中,我需要为每种内容提供如此多的灵活性。

是否可以使用简单的AuthorizeAttribute?

如果我能够处理这个,最好使用自定义的权限集合,我可以在每个令牌上添加如此多的角色和限制,并且在每个请求中都是关于检查相关权限。 我需要类似的东西(我想)。

1 个答案:

答案 0 :(得分:0)

为此,你必须做几件事。

  1. Asp.net声明 - 您的解决方案在于ClaimsPrincipal,只是忘记了角色,因为从更广泛的角度来看,WCF开始下降,因为它无法处理声明。

    Claim Principle Link

  2. 您必须从服务器发出声明,并且需要在请求时在OWIN管道中注入声明。

  3. 注意: 您可以使用ClaimsPrincipal Class发出声明

    1. 第三步是处理网络API中的声明。为此,我建议你使用leastprivilages实现的简单库,即 ResourceAuthorization

      Resource Authorization

    2. 通过这种方式,您可以在每个资源级别授权机密新闻新闻等资源。

    3. 如果您不想这样做,那么您必须实施继承自 AuthorizeAttribute CustomAuthorization

    4. 根据我的经验,我建议您分两步分发您的授权,即在控制器级别检查授权cookie,然后在资源,即api方法级别检查资源访问。