在《原理篇》中我们谈到:如果采用自定义安全主体权限模式,我们可以通过自定义AuthorizationPolicy或者ServiceAuthorizationManager实现对基于当前认证用于相关的安全主体的提供,进而达到授权的目的。为了让大家对此有个更加深刻的认识,在这篇文章中我们会提供一个具体的例子。[源代码从这里下载]

目录:
一、创建自定义AuthorizationPolicy
二、创建自定义ServiceAuthorizationManager
三、通过自定义AuthorizationPolicy实现授权
四、通过自定义ServiceAuthorizationManager实现授权

我们先来演示通过自定义AuthorizationPolicy以提供当前安全主体的方式。我们通过自定义AuthorizationPolicy实现这样的授权策略:如果用户名为Foo(假设为管理员),我们创建一个包含“Administrators”角色的安全主体;而对于其他的用户,提供的安全主体的角色列表中仅仅包括“Guest”。我们为该自定义AuthorizationPolicy起名为SimpleAdministrators,SimpleAdministrators整个定义如下。

class SimpleAuthorizationPolicy : IAuthorizationPolicy
   2: {
public SimpleAuthorizationPolicy()
   4:     {
this.Id = Guid.NewGuid().ToString();
   6:     }
object state)
   8:     {
string.Empty;
in evaluationContext.ClaimSets)
  11:         {
in claimSet.FindClaims(ClaimTypes.Name, Rights.PossessProperty))
  13:             {
string)claim.Resource;
  15:             }
  16:         }
  17:         
'\\'))
  19:         {
  20:             userName = userName.Split('\\')[1];
  21:         }
] = GetPrincipal(userName);
false;
  24:     }
  25:  
string userName)
  27:     {
new GenericIdentity(userName);
true) == 0)
  30:         {
 }); 
  32:         }
 }); 
  34:     }
  35:  
public ClaimSet Issuer
  37:     {
return ClaimSet.System; }
  39:     }
private set; }
  41: }

相关文章:

  • 2021-11-25
  • 2022-12-23
  • 2022-12-23
  • 2021-07-12
  • 2021-10-16
  • 2021-09-09
  • 2021-10-12
  • 2022-12-23
猜你喜欢
  • 2021-12-22
  • 2021-11-16
  • 2021-08-28
  • 2021-07-23
  • 2021-08-21
  • 2021-05-24
相关资源
相似解决方案