0

マイRegisterページは認証されたユーザーのみが利用できるため、入力したユーザーはページにアクセスhttp://localhost:52874/register.aspxできません。

しかし、私はログインページからそれへのリンクを持っています、そしてそれをクリックするとそれDOESを使用して認証なしで登録ページに行きますServer.Transfer("Register.aspx", false);

これは私が気に入っていることです。つまり、Login.aspxページからしかアクセスできないということです。これは良いことです。

しかし、Submit登録ページのボタンを押すと(login.aspxから転送した後)、login.aspx処理なしですぐに元に戻ります。

次に、追加する必要があります:

  <location path="Register.aspx">
    <system.web>
      <authorization>
        <allow users="?" />
      </authorization>
    </system.web>
  </location>

それが機能することを許可するためのWeb構成へ。これは、URLからアクセスできるようになったことを意味します。では、なぜこの動作を使用するServer.Tranferのか、ボタンのクリックを処理させないのに使用できるのでしょうか。

4

4 に答える 4

1

サーバーを実行するときにブラウザのアドレスバーを見ると、URLは変更されません。これは、現在のページの処理を停止し、ブラウザが気付かないうちに新しいページの処理を開始するためです。したがって、ポストバックするまで認証をバイパスします。つまり、ボタンをクリックすると、ログインに戻ります。

あなたがしなければならないのは、URLを変更するResponse.Redirectであり、認証は正しく行われます。

于 2012-07-06T10:32:45.767 に答える
0

これは、Server.Transferが現在のリクエストの処理を別のページに転送するためです。これは、要求されたページにアクセスできるかどうかを確認した後に発生します。つまり、Server.Transferを使用している場合、リクエストはアクセスできるページに対するものでしたが、アクセスできないページにそのページの処理を渡すことでセキュリティを回避しました。

Server.TransferVsをチェックしてください。Response.Redirect

于 2012-07-06T10:29:02.680 に答える
0

http://www.4guysfromrolla.com/articles/120705-1.aspx-メンバーシッププロバイダーに関するこの記事を確認してください。それは役立つかもしれません:)

ログイン後にユーザーがページにアクセスする方法のみを使用する場合は、deny user = "?"が必要になる場合があります。これにより、匿名ユーザーによるそのページへのアクセスが拒否されます。

于 2012-07-06T10:29:17.047 に答える
0

MSDNから:

ASP.NETは、現在のユーザーがTransferメソッドによって配信されたリソースを表示することを許可されていることを確認しません。ASP.NETの承認および認証ロジックは、元のリソースハンドラーが呼び出される前に実行されますが、ASP.NETは、Transferメソッドによって示されるハンドラーを直接呼び出し、新しいリソースの認証および承認ロジックを再実行しません。アプリケーションのセキュリティポリシーで、クライアントがリソースにアクセスするための適切な承認を必要とする場合、アプリケーションは再承認を強制するか、カスタムアクセス制御メカニズムを提供する必要があります。

したがってServer.Transfer("Register.aspx", false);、シナリオで認証されないのは仕様によるものです。

誰でも登録ページを見ることができるはずだと思います-ユーザーはURLを介してそこに行くことができるはずです。したがって、アウトラインを変更したweb.configファイルを使用して、認証されていないユーザーが[登録]ページを使用できることを確認してください。

于 2012-07-06T10:33:28.617 に答える