2017-06-21 157 views
1

我正在使用Visual Studio 2015創建ASP.NET MVC 5應用程序。我使用Identity框架向認證後的用戶添加聲明。添加基於內置ClaimTypes的聲明很容易,但添加一個自定義聲明是布爾問題時遇到了挑戰。布爾類型的自定義聲明

我創建這個靜態類來保存我的自定義聲明類型:

public static class CustomClaimTypes 
{ 
    public static readonly string IsEmployee = "http://example.com/claims/isemployee"; 
} 

然後我嘗試自定義聲明添加到ClaimsIdentity對象:

userIdentity.AddClaim(new Claim(CustomClaimTypes.IsEmployee, isEmployee)); 

它詳細介紹了這個錯誤上面的行:

無法從'bool?'轉換到'System.Security.Claims.ClaimsIdentity'

我找到的所有例子都是添加字符串。你如何添加一個bool,int或其他類型?謝謝。

回答

2

聲明只能表示爲字符串。任何數字,布爾值,guid,無論在添加到索賠集合時都必須是字符串。那麼ToString()吧。

userIdentity.AddClaim(
    new Claim(CustomClaimTypes.IsEmployee, 
    isEmployee.GetValueOrDefault(false).ToString())); 
+0

謝謝@Amy。是否有可能將複雜對象存儲在自定義聲明中?一直在閱讀本文:https://docs.microsoft.com/en-us/dotnet/framework/wcf/extending/how-to-create-a-custom-claim – Alex

+1

您必須將它們序列化爲一個字符串。 – Amy