1. ホーム
  2. asp.net

なぜ<deny users="?">なのですか?/>が含まれているのですか?

2023-07-23 08:44:07

質問

その ? ワイルドカードは認証されていないユーザを表しますが * は認証済み、未認証を問わずすべてのユーザーを表します。私の本では、以下のようなURL認証の例を示しています。

<authorization>
  <deny users="?" />
  <allow users="dan,matthew" />
  <deny users="*" />
</authorization>



しかし、上記のコードは.NETと同じ効果になりませんか?

<authorization>
  <allow users="dan,matthew" />
  <deny users="*" />
</authorization>

あるいは、作者は <deny users="?" /> というルールにしたのでしょうか?

どのように解決するのですか?

ASP.NET は、設定ファイルからのアクセスを優先的に許可します。 競合する可能性がある場合、最初に発生したグラントが優先されます。 そのため

deny user="?" 

は匿名ユーザーへのアクセスを拒否します。 その後

allow users="dan,matthew" 

はそのユーザへのアクセスを許可します。 最後に、全員へのアクセスを拒否します。 これは、dan,matthew以外の全員がアクセスを拒否されるように振っています。

Edited to add: そして @Deviant が指摘するように、最後のエントリには認証されていないものも含まれているため、認証されていないものへのアクセスを拒否することは無意味です。 このトピックについて論じた良いブログ エントリが以下にあります。 Guru Sarkar のブログ