次のC#の動作を説明してもらえますか?私は CAS について学ぶためだけに小さなコンソール アプリケーションを作成しましたが、次のコード行がそのように機能する理由を理解できないようです。
string[] myRoles = new string[] { "role1", "role2", "role3" };
GenericIdentity myIdentity = new GenericIdentity("myUsername", "customAuthType");
GenericPrincipal myPrincipal = new GenericPrincipal(myIdentity, myRoles);
System.Threading.Thread.CurrentPrincipal = myPrincipal;
Console.WriteLine(SecurityManager.IsGranted(new PrincipalPermission(null, "role1")));
Console.WriteLine(SecurityManager.IsGranted(new PrincipalPermission(null, "roleX")));
どちらの SecurityManager.IsGranted() 呼び出しでも、出力は「true」です。
次に、次の行を追加するとします。
new PrincipalPermission(null, "role1").Demand();
new PrincipalPermission(null, "roleX").Demand();
最初のデマンド コールはパスしますが、2 番目のデマンド コールは (予想どおり) SecurityException を引き起こします。
SecurityManager.IsGranted() 呼び出しが「roleX」権限に対して false を返さないのはなぜですか?