SPClaimProvider.FillClaimsForEntity method (Uri, SPClaim, List<SPClaim>)
衍生的類別中實作時,請將宣告 token 加強自訂宣告。
Namespace: Microsoft.SharePoint.Administration.Claims
Assembly: Microsoft.SharePoint (in Microsoft.SharePoint.dll)
Syntax
'宣告
Protected MustOverride Sub FillClaimsForEntity ( _
context As Uri, _
entity As SPClaim, _
claims As List(Of SPClaim) _
)
'用途
Dim context As Uri
Dim entity As SPClaim
Dim claims As List(Of SPClaim)
Me.FillClaimsForEntity(context, entity, _
claims)
protected abstract void FillClaimsForEntity(
Uri context,
SPClaim entity,
List<SPClaim> claims
)
參數
context
Type: System.Uri為 URI 內容。這必須是格式正確的 URI。
entity
Type: Microsoft.SharePoint.Administration.Claims.SPClaim要當做引數的實體。
claims
Type: System.Collections.Generic.List<SPClaim>SPClaim一般宣告清單來進行修改,並將其中加入其他宣告或宣告增強。
備註
當您在使用者的安全性權杖中包含其他宣告時,已擴大宣告。如果您想要擴大宣告,您必須實作此方法。此外,您也必須設定SupportsEntityInformation屬性來trueSPClaimProvider類別中。為了要呼叫此方法, SupportsEntityInformation必須傳回true。
如需宣告增強的詳細資訊,請參閱How to: Create a Claims Provider和Claims Provider。
下列程式碼範例會顯示的宣告增強的支援,以及如何增強宣告。示範的目的,此宣告提供者範例僅支援兩個使用者"contoso\spuser1"及"contoso\spuser2"的宣告增強。宣告提供者時的宣告提供者會看到這些兩位使用者登入 SharePoint 網站,將會新增至使用者 token 的兩個其他宣告: CRMClaimType.Role和CRMClaimType.Region (不會顯示以下) 的個別類別中所定義的。
**DecodeUserIdentifierClaim()**是靜態的方法可以用來解碼使用者身分識別宣告。
Sample code provided by:Andy Li,Microsoft Corporation。
Examples
public override bool SupportsEntityInformation
{
get { return true; }
}
protected override void FillClaimsForEntity(Uri context, SPClaim entity, List<SPClaim> claims)
{
if (null == entity)
{
throw new ArgumentNullException("entity");
}
if (null == claims)
{
throw new ArgumentNullException("claims");
}
// Adds the role claim.
SPClaim userIdClaim = SPClaimProviderManager.DecodeUserIdentifierClaim(entity);
//Adds claims for SPUSER1 with CONTOSO as the domain.
if (userIdClaim.Value.ToUpper() == "CONTOSO\\SPUSER1")
{
claims.Add(CreateClaim(CRMClaimType.Role, CRMRoleValue.SalesManager, Microsoft.IdentityModel.Claims.ClaimValueTypes.String));
claims.Add(CreateClaim(CRMClaimType.Region, CRMRegionValue.NorthWest, Microsoft.IdentityModel.Claims.ClaimValueTypes.String));
}
// Adds claims for CONTOSO\SPUSER2
if (userIdClaim.Value.ToUpper() == "CONTOSO\\SPUSER2")
{
claims.Add(CreateClaim(CRMClaimType.Role, CRMRoleValue.RegionManager, Microsoft.IdentityModel.Claims.ClaimValueTypes.String));
claims.Add(CreateClaim(CRMClaimType.Region, CRMRegionValue.NorthWest, Microsoft.IdentityModel.Claims.ClaimValueTypes.String));
}
}