2017-06-21 16 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

クレームは文字列としてしか表現できません。クレームコレクションに追加されたときに、文字列でなければならないものは何でも、ブーリアン、ガイドなど。だから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

関連する問題