我有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?
如果我能够处理这个,最好使用自定义的权限集合,我可以在每个令牌上添加如此多的角色和限制,并且在每个请求中都是关于检查相关权限。 我需要类似的东西(我想)。
答案 0 :(得分:0)
为此,你必须做几件事。
Asp.net声明 - 您的解决方案在于ClaimsPrincipal
,只是忘记了角色,因为从更广泛的角度来看,WCF开始下降,因为它无法处理声明。
您必须从服务器发出声明,并且需要在请求时在OWIN管道中注入声明。
注意: 您可以使用ClaimsPrincipal Class发出声明
第三步是处理网络API中的声明。为此,我建议你使用leastprivilages
实现的简单库,即 ResourceAuthorization 。
通过这种方式,您可以在每个资源级别授权机密新闻,新闻等资源。
如果您不想这样做,那么您必须实施继承自 AuthorizeAttribute 的 CustomAuthorization 。
根据我的经验,我建议您分两步分发您的授权,即在控制器级别检查授权cookie,然后在资源,即api方法级别检查资源访问。