2012-02-16 14 views
0

WebアプリケーションにASP.netフォーム認証を使用しています。私は管理作業のためのフォルダ "admin"を持っています、そして、もし彼/彼女が誤っているなら、私は1人のユーザをロックすることができます。ASP.Net認証:ユーザーがページにアクセスするための認証/承認に失敗した場合、複数の応答を持つことができますか

現在、通常のユーザーが管理者ページにアクセスしようとすると、ログオンページにリダイレクトされますが、既にログオンしています。

質問:ユーザーがページにアクセスできない場合、「このページにアクセスするには管理者権限が必要です」/「あなたのアカウントはロックアウト "/(通常のログオンページ)

ValidateUser()はboolのみを返すことができます。 :(

どうもありがとう

答えて

1

あなたの役割を実装し、それらに人々を追加する必要があります。あなたが適切な役割に人を割り当てたら、あなたは人がアクセスするための適切な役割であるかどうかをチェックします。ページでない場合には、それらをリダイレクトするか、適切なエラーメッセージを表示あなたはすでにしようとしているようにそれはそう背後にあるようなコードでこれを行うことができるようになります。

if(!Roles.IsUserInRole("Administrator")) Response.Redirect("~/"); 

それとも、web.configファイル

を使用することができます
<configuration> 
    <location path="memberPages"> 
     <system.web> 
      <authorization> 
       <allow roles="Administrator" /> 
       <deny users="*" /> 
      </authorization> 
      </system.web> 
     </location> 
<configuration> 

は、詳細は以下のリンクを参照してください。

+0

です。その場合、ユーザーがアクセスしようとしているディレクトリを確認し、対応する役割をチェックするためにreturnUrlをチェックする必要があります。私はこのようにチェックするのはあまり好きではありませんが、これまでのところ何の選択肢も見つけられませんでした。 –

+0

こんにちは。基本ページ、マスターページ、さらにはHttpModuleにログインすることで、より良いものにすることができます。 HttpModuleルートに行く場合は、 'UrlAuthorizationModule.CheckUrlAccessForPrincipal'メソッドと' HttpApplication'の 'AuthenticateRequest'または' AuthorizeRequest'イベントを調べることができます。 – Jeff

-1

私は役割をdiffenrentするために、異なるURLを与えるこの種の問題を解決しました。あなたは

asp.netが自動的login.aspxのページの両方にリダイレクトされますが、あなたから得ることができるwww.yoursite.com/privateを与えるユーザーにwww.yoursite.com/admin を与えるadminに

ユーザーの種類のURLパラメータ。

//I detect where the request originated from 
    string str = Request.QueryString["ReturnUrl"] == null ? "" : Request.QueryString["ReturnUrl"].ToString(); 
     //if this is Admin can access to Admin Area only 
     if (str.Contains("Admin") == true || str.Contains("admin") == true || str.Contains("ADMIN") == true) 
      { ....... 
+0

これは安全ではありません。ユーザーはURLを改ざんしてアクセスできます。 – PHeiberg

+0

私はコードの残りを省略しました!その後、ユーザーの資格情報をチェックすることは明らかです!私は、元の質問から必要に応じて別のサイトゾーンに異なる役割をルーティングするためにユーザーの資格情報のチェックの上にこのコードを追加することを提案しました – enricoariel

+0

ユーザーがURLを確認した後に承認されていることを確認した場合、 。ユーザーは実際に管理者であることを確認する必要があります。 – PHeiberg

関連する問題