Q1 – ネイティブのUrlAuthorizationModuleがロールを認識しない理由は、ネイティブ モジュールがアクセスできない IPrincipalインターフェイスを 実装するマネージド オブジェクトにロール情報が格納されているためです。
A) しかし、ネイティブのUrlAuthorizationModuleが認証チケットを理解し、FormsAuthenticationModuleと連携して動作できる場合、なぜ Roles モジュールでも動作しないのでしょうか?
つまり、このチケットには、ユーザーのロールに関する情報も含まれていませんか? もしそうなら、UrlAuthorizationModuleはチケットからロールに関するすべての情報を取得できるので、 IPrincipalオブジェクトにアクセスする必要はありませんか?!
Q2 次の記事http://www.asp.net/learn/security/tutorial-11-vb.aspxの主張:
匿名ユーザーがサイトにアクセスすると、FormsAuthenticationModuleもRoleManagerModuleもプリンシパル オブジェクトを作成しません。
A) 上記の主張が真である場合、次のコードは例外をスローしません。これは、Userプロパティに null 参照が含まれているためです。
if (User.Identity.IsAuthenticated)
Label1.Text = "user is authenticated";
else Label1.Text = "user is not authenticated";
Label1に「<em>ユーザーは認証されていません」と表示されます。これは、ユーザーが認証されていなくても、IPrincipalを実装するオブジェクトがユーザープロパティに割り当てられていることを示唆しています。
ありがとう