2010-12-08 4 views
0

.NETの認証/承認とログインリダイレクトシステムの仕組みを理解する上で、何か不足しているはずです。私は、管理者ユーザーに制限されているページの管理者/ default.aspxをを持っているので、私は例を持っている:彼は管理者でない場合.NET認証の許可の役割ログインredirct returnURLの混乱

<configuration> 
    <system.web> 
    <authorization>  
     <allow roles="admin" />  
     <deny users="*" /> 
    </authorization> 
    </system.web> 
</configuration> 

ユーザーはここで取得したとき、彼は次のようにログインページにリダイレクトされますweb.configファイルで指定:

<authentication mode="Forms"> 
    <forms loginUrl="Login.aspx" name="someName" timeout="60" path="/"> 
    </forms> 
</authentication> 

(にreturnurl =%2fAdmin%2fDefault.aspxのように見える)の戻りURLで。ユーザーが "admin"ロール指定と一致しない資格情報で再度ログインすると、admin/defaultページにリダイレクトされ、再度ログインページに戻ります。

私はすべて正常に動作していると思いますが、ユーザーがログインしていない場合はログインページにリダイレクトできますが、ログインしている場合は別の(ホームまたはデフォルト)ページにリダイレクトできます役割の要件を満たす。

これを行うにはどうすればよいですか?事前に

おかげで、

ラスティ

答えて

0

あなたは、この方法はいくつか行うことができます。

  1. はフォームプロバイダーから派生したカスタム認証プロバイダを書きます。

  2. HttpModuleを記述すると、認証前にフォーム認証モジュールがすでにログインページにリダイレクトされているため、認証前に役割を持つように、どのイベントがトラップするのがベストかわかりません。後のイベントでリダイレクト応答を特定することは、今後の方向に向かう可能性があります。 (これにより、認証されたユーザーのログオンページへのすべてのリダイレクトが、ログオンしたユーザーの「ホーム」ページに移動するという付随的な影響が生じる可能性があります)。

+0

ありがとうございます。その間、私はこのblogpostのアイデアに従って、回避策を考え出します:http://geekswithblogs.net/ranganh/archive/2005/04/25/37598.aspx、あなたの#2の提案に似ています。ログインページでは、ユーザーがすでに認証されているかどうか、returnURLがあるかどうかを確認します。もしそうなら、単にホームページにリダイレクトします。私は.Netのセキュリティ設定を使用してより正式な解決策があると思っていただろうが、今のところうまくいく。 – rusty

+0

.Netsセキュリティの設定は、ほとんどの人にとって大抵の人に合っていますが、このような拡張性のために設計されています! P.S.回答が役に立った場合、回答を受け入れない、または了解していない人を助けようとすることを嫌がるようになると、upvoteを忘れて答えを受け入れることを忘れないでください(自分の答えであっても)。 – stevenrcfox

関連する問題