2010-11-22 17 views
6

私はASP.NET MVCアプリケーションを持っており、フォーム認証を使用しています。認証が必要なページに行くと、コントローラーアクションに[Authorize]属性があることを意味し、http://localhost/Login?ReturnUrl=/MyAuthorizedUrlのような戻りURLを持つログインページにユーザーをリダイレクトします。FormsAuthentication.GetRedirectUrlは常にデフォルトを返します

これは私の設定は、セットアップがどのようである:

<authentication mode="Forms"> 
    <forms loginUrl="~/Login" timeout="2880" defaultUrl="~/" /> 
</authentication> 

これは私がリダイレクトURLを取得しています方法です:

var url = FormsAuthentication.GetRedirectUrl(model.Email, model.RememberMe); 

これは、常にデフォルトのURLを返します。

この原因は何ですか?

答えて

7

FormsAuthentication.GetRedirectUrlの結果として「MyAuthorizedUrl」を取得したいとしますか?

ReturnUrl=/MyAuthorizedUrlのような非表示の入力フィールドを挿入する必要があります。 name="ReturnUrl" value="/MyAuthorizedUrl"

理由は、ログインページがReturnUrlでGETを介して要求されているが、POSTが/Login(パラメータなし)になっているためです。

また、ReturnUrlパラメータを含むようにフォームアクション属性を変更してください。

5

あなたのログインフォームの場合:

@using (Html.BeginForm 
(
    "Login", 
    "Account", 
    new { ReturnUrl = Request.QueryString["ReturnUrl"] }, 
    FormMethod.Post 
)) 

お使いのコントローラ名を使用して、アクションの名前と「アカウント」と「ログイン」に置き換えます。

関連する問題