2016-08-02 15 views
0

私のAuthorizeAttributeが呼び出されると、ページはログインするように送信されます。しかし、ログインが完了すると、ホーム/インデックスに出ます。これは大変面白いです。それをどうしたらいいのでしょうか? コードパスは決して私のコントローラには入りませんので、何をしているのかについては何も制御していません。AuthorizeAttribute - HandleUnauthorizedRequestのフィルタコンテキストに情報を入力する方法

答えて

0

フォーム認証を使用すると、認証が必要なページにアクセスすると、ASP.NETはログインページにリダイレクトし、ReturnUrlをパラメータとして渡します。

したがって、このパラメータを使用して以前の場所にユーザーを戻すだけで済みます。

public ActionResult Login(string username, string pass, string returnUrl) 
{ 
    // code to authenticate user here... 

    if (!string.IsNullOrEmpty(returnUrl)) 
    return Redirect(returnUrl); 

    return RedirectToAction("Index", "Home"); 
} 

はまた、このメソッドを呼び出すと、また、あなたがすでにやっているかもしれないと、認証Cookieを発行することをFormsAuthentication.RedirectFromLoginPage

Redirects an authenticated user back to the originally requested URL or the default URL. 

https://msdn.microsoft.com/en-us/library/ka5ffkce(v=vs.110).aspx

お知らせ使用して検討する必要があります。だから、これを二度もやっていないことを確認しなければなりません。

編集:?https://stackoverflow.com/a/1206728/722778

は、おそらくあなたは、コントローラのアクション(例えばHtml.BeginForm(「ログオン」、「アカウント」)を指定するフォームを生成している参照してください

その場合には、これだけにしてみてくださいあなたのビューで:

Html.BeginForm() 

かにreturnurlパラメータyourselveを渡す:

Html.BeginForm("LogOn", "Account", new {ReturnUrl = Request.QueryString["ReturnUrl"] }) 
+0

問題は、リダイレクト時にLogin関数がreturnUrlを受け取ることがなく、渡されたことを確認する方法がわからないことです。 –

+0

私の最後の編集を見てください – hernant

関連する問題