2011-06-22 10 views
4

他のスタックオーバーフローポストに基づく承認が必要な元のページにリダイレクトされるmvcログインページをまとめようとしました。MVC3ログイン後のリダイレクト

リダイレクト

protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) 
{ 
    filterContext.Result = new RedirectToRouteResult(
          new RouteValueDictionary 
           { 
            { "action", "login" }, 
            {"ReturnUrl", filterContext.HttpContext.Request.RawUrl}, 
            { "controller", "mycontroller" } 
           }); 
} 

とログインページビューでは、フォーム内に位置し

@Html.Hidden("returnUrl", ViewContext.HttpContext.Request.Params["returnurl"]) 

を持っています。私はもともとViewContext.HttpContext.Request.Url.PathAndQueryを別のフォーラム投稿に基づいて使用しましたが、URL全体が含まれていました。

内部コントローラ私は

[HttpPost] 
public ActionResult Login(MyModel model) 
{ 
    if (loginisValid) 
     return Redirect(model.ReturnUrl); 
    else 
     return View(); 
} 

を持っているが、それは何もしませんが、それはリダイレクトを打っていてもかかわらず、のorignalのページを返します。私はRedirectToActionとRedirectToRouteも試みましたが、それらはエラーを出します。私はlocalhost/admin/mycontrollerにあるインデックスページでこれをテストしています。したがって、model.ReturnUrlには現在、 "/ admin/mycontroller"が含まれています。私はこの仕事をするために何を変えなければならないのですか?

答えて

2

このコードはすべて正しいことが判明しました。それは正しく、それが再び認証を失敗した私のインデックスページに戻ってリダイレクト後にクッキーを保存したことがないので、しかし、私は私のコントローラの上に

[RequireHttps(Order=0)] 

を入れていません。

0

のResponse.Redirect(!?string.IsNullOrEmpty(にreturnurl) にreturnurl: FormsAuthentication.DefaultUrl)..私は、フォーム認証を使用していますが、私はこの行を使用します。

関連する問題