訪問者が特定のページを開かないようにする
-
22-07-2019 - |
質問
データベースとしてSQL Serverを使用し、プログラミング言語としてC#2005を使用するASP.Net 2.0 Webサイトがあります。 Webサイトはほぼ完成しており、すべてのリンクは正常に機能しています。しかし、私は通常のユーザーが数ページを開くのを防ぎたいです。ユーザーがこれらの特定のリンクをクリックすると、ASPログインコントロールを含む別のページが開きます。ユーザーは、有効なユーザーIDとパスワードを指定して、制限ページを指すリンクを表示する必要があります。しかし、初心者なので、ASP Loginコントロールの全機能を活用する方法がわかりません。なぜなら、ユーザーが制限されたページの正確なURLを知った場合、ユーザーはログインコントロールをバイパスして、アドレスバーにURLを入力することでそれらのページに直接アクセスできるからです。これを防ぎたいです。ユーザーがアドレスバーにURLを直接入力する場合、ページ自体がログインコントロールを介して検証されているかどうかを確認し、ページを表示するか、ログインページをポイントするようにする必要があります。
この機能を実装するにはどうすればよいですか?
ありがとう。
ラリットクマールバリク
解決
アクセス許可を制御する必要があるページのすべての Page_Load()
イベントでユーザーのログイン状態を確認するか、他のすべてのファイルに含まれるCSファイルに認証コードを単純に配置する必要があります。
選択した認証アーキテクチャに応じて(単にセッション変数を使用するか、CookieでセッションIDを作成します)、それに応じてコードを調整する必要があります。
最も簡単な方法は、セッションオブジェクトを介してログインを管理することです。ユーザーが正しい資格情報で適切にログインしたら、 Session [" logged_in"] = true
を設定できます。そして、保護したいページのすべての Page_Load()
イベントで、次のチェックを行う必要があります。
Page_Load()関数の先頭に次のコードを追加します。
if (Session["logged_in"] != null && (bool)Session["logged_in"] == true){
Response.Write("I'm logged in!");
}else{
Response.Write("I'm not logged in.");
}
これは単純なイントラネットアプリケーションでは問題ありませんが、より安全なログインアーキテクチャを使用したい場合は、セッションをハイジャックできるためセッション変数のみに依存することは安全ではないため、件名について詳しく読んでください。
他のヒント
場所セクションをご覧ください。ウェブ設定の。
このセクションでは、ページレベルまでアクセス権を定義できるため、ユーザーがセキュリティで保護されたページのURLを知っていても、ASP.NETはそれらを許可しません。
したがって、次のようなものを追加します。
<location path="SecuredPage.aspx">
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>
&quot; deny users =&quot;?&quot;&quot;ビットには「すべての匿名ユーザーを拒否する」と書かれています。
特定の役割のみを許可するように設定することもできます(使用している場合)。
承認セクションの詳細については、こちらをご覧ください:
各ユーザーのログインセッションを管理する方法が必要になります。以下はあなたを助けることができるいくつかのチュートリアルです:
http://www.codeproject.com/KB/session/NoCookieSessionLogin.aspx
http://www.dotnetspider.com /resources/5597-Handling-Session-for-Login-Logout.aspx
ユーザーのロールテーブルを作成します。ログインするすべての人が「通常の」役割を取得します。資格情報で指定した特別な用途には、Webサイトのページまたはセクションにアクセスするためのロールが割り当てられます。特定のユーザー(自分のような)は、すべてへのアクセスを自動的に許可する管理者ロールを取得します。
CheckIsInRoles( 'Admin'、 'Normal'、 'WhateverRoleYouChoose')と呼ばれるブール値を返す関数を起動します。 trueの場合、ページをロードします。そうでない場合は、しないでください。
正しい役割でない場合は、リンクを表示しないことをお勧めします。
これには、誰もが一度ログオンすると、毎回ログオンしなくても必要なすべてのページにアクセスできるという利点があります。