新しいWebアプリケーションを作成しました。対生成されたログイン、登録および同様のページ。web.configに、認証タイプ「Forms」を入れます。すべてのリクエストがログインページにリダイレクトされることを期待していました。それでも、ホームページとバージョン情報ページに簡単に移動できます。
何故ですか?認証されていないユーザーをログインページにリダイレクトさせる方法は?新しいページを追加するのだろうか、それらは誰かに自分自身を見せているのと同じ振る舞いをするのだろうか?
新しいWebアプリケーションを作成しました。対生成されたログイン、登録および同様のページ。web.configに、認証タイプ「Forms」を入れます。すべてのリクエストがログインページにリダイレクトされることを期待していました。それでも、ホームページとバージョン情報ページに簡単に移動できます。
何故ですか?認証されていないユーザーをログインページにリダイレクトさせる方法は?新しいページを追加するのだろうか、それらは誰かに自分自身を見せているのと同じ振る舞いをするのだろうか?
作成する各ページで認証を確認する必要がある場合があります
if(!User.Identity.IsAuthenticated)
{
FormsAuthentication.RedirectToLoginPage();
}
ページを認証されたユーザーに制限する方法は2つあります。
1つはプログラムによるもので、もう1つはweb.configを使用する
ことです。この行のweb.configから始めて、ユーザーが表示できる内容と内容を制限できます。これは、次のことを制御する行です。
<authorization>
<allow users="?" />
</authorization>
詳細はこちら: http: //msdn.microsoft.com/en-us/library/wce3kxhd (VS.100).aspx
これを含むweb.configをディレクトリに配置することで、誰もが何も表示されないようにブロックします。
<?xml version="1.0"?>
<configuration>
<system.web>
<authorization>
<deny users="*" />
</authorization>
</system.web>
</configuration>
次に、それらの一部を表示するための追加のアクセス許可を追加します。
もう1つの方法は、認証が必要な各ページにプログラムで移動し、これが正しいかどうかを確認するコードを追加することです。HttpContext.Current.User.Identity.IsAuthenticated
protected void Application_AuthenticateRequest(Object sender, EventArgs e)
また、すべてのページで呼び出される関数を幅広くチェックできるglobal.asaxがあります。
requireSSL=true
フォームに設定した場合、Identity.IsAuthenticated
は保護されたsslページでのみ正しい結果を返し、他のすべてのページではfalseを返すことに注意してください。
そして、1つの相対的な質問:一部のハッカーはユーザーからCookieを盗み、その名前でWebサイトにログインできますか?