2011-01-17 5 views
1

私はdotnetopenauthを使用していますが、私はclaimIdentifierから何を格納すべきかと思います。私はそれがちょうどidだと思ったけど、urlもあるようだ。ClaimedIdentifierをすべて保存していますか?

私は

Identifier claimedIdentifier = openIdRelayingParty.ClaimedIdentifier; 

ような何かをするとき、私は

//ヤフー

https://me.yahoo.com/a/2RCv_bQ7341PA3v4irf5tzu_9K_fF1414afa414 

//取得するには、だから私は、この全体を保存したりします

https://www.google.com/accounts/o8/id?id=AItOawmMvmoomT7lOO5jwEaAd1414dfafaf241VUI 

グーグルちょうど長い文字列ですか?私は長い文字列を格納する必要がある場合、それをどのように抽出するのですか?それは、各プロバイダの書式設定が少し違うようです。

+0

私はDotNetOpenAuthに慣れていませんが、 "長い文字列"対 "id"対 "URL"はどういう意味ですか? OpenIDでは、識別子*はURL(形式は各プロバイダ固有の形式)です。 – Cameron

+0

ya私はIdを意味すると思います。私はちょうどyahooが実際にそれらのURLのIDとしてラベル付けしていないので、それは長い文字列のid部分と呼ばれました。私はURL全体を格納する必要がありますか? – chobo2

答えて

3

の部分には、部分を含むURL全体を保存する必要があります。フラグメント部分は、いくつかのURLの最後にある#fragmentです。例えば、私はすべてのヤフーClaimedIdentifierは、実際にこのようなフラグメントを含んだと思う:全体 ClaimedIdentifierが保存され、後で同じ人を識別するために使用されることが極めて重要である

https://me.yahoo.com/a/2RCv_bQ7341PA3v4irf5tzu_9K_fF1414afa414#aHd88

。また、身元確認がcase sensitiveであることを確認してください。 にしないでください。System.Uri.Equalsメソッドを使用して、2つのClaimedIdsが同等であることを確認してください。 #fragmentのみが異なる場合、が正しくない場合はtrueを返します。Identifier.Equalsまたは簡単なString.Equals(string, string, StringComparison.Ordinal)メソッドを使用する必要があります。

また、データベースのユーザーテーブルからユーザーを検索する場合は、ユーザーテーブルがClaimedId列の大文字と小文字が区別されるように構成されていることを確認してください。

+0

あなたがnhibernate(私のためにデータベースを生成する)のようなormマッパーを使用している場合はどうでしょうか。大文字と小文字を区別してチェックする方法についてはあまりよく分かりません。私はちょうど私が得たものを取って、どこか(u => u.OpenId == ClaimedIdentifer).FirstOrDefault() – chobo2

+1

のような何かをするだろうと思っています。それはあなたが使っているORMとそのルールによってまったく異なります。良いORMは、あなたの例で与えたラムダクエリをSQLクエリに変換します。これにより、SQLエンジンは大文字と小文字を区別する必要があるかどうかを判断します。ORMがdbを作成したときに元々使用していたスキーマに応じて実行するかどうかは異なります。列で大文字と小文字が区別されるようにする方法については、ORMのドキュメントを参照する必要があります。テストは簡単に行うべきです。一致してはいけませんが、大文字でのみ異なるコードを作成し、それが動作するかどうかを確認してください。 –

関連する問題