2010-01-29 2 views
0

를 사용하여 로그인 후 리디렉션하지 설명 할 수 없습니다내가 뭐하는 거지 왜 내 로그인 행동에, 나는 ASP.NET MVC를 사용하고 RedirectFromLogin

[AcceptVerbs("POST")] 
public ActionResult Login(FormCollection form) 
{ 
    User validatedUser = // tests username/pwd here. 

    FormsAuthentication.RedirectFromLoginPage(
     validatedUser.ID.ToString(), rememberMe); 

    if(String.IsNullOrEmpty(Request["ReturnUrl"])) 
     string redirectUrl = Request["ReturnUrl"]; 

    if (!String.IsNullOrEmpty(Request.QueryString["ReturnUrl"])) 
     string redirectUrl = Request["ReturnUrl"]; 
} 

나는 로그인 페이지에서 오전 때 내 URL은 다음과 같습니다 :

http://localhost:56112/user/login?ReturnUrl=/admin/settings 

여기에 아무 것도 보이지 않습니까?

내 Web.config의는 :

<authentication mode="Forms"> 
    <forms loginUrl="/user/login" 
     protection="All" 
     timeout="30" 
     name="SomeCookie" 
     requireSSL="false" 
     slidingExpiration="true" 
     defaultUrl="default.aspx" /> 

답변

6

나는 MVC 응용 프로그램에서 RedirectFromLoginPage 방법을 사용하여에 당신을 추천 할 것입니다. 표준 ASP.NET MVC 기술을 사용하여 리디렉션을 수행하는 것이 좋습니다. SetAuthCookie 방법을 사용할 수 있습니다.

public ActionResult Login(FormCollection form) 
{ 
    // ... 
    FormsAuthentication.SetAuthCookie(validatedUser.ID.ToString(), rememberMe); 
    // ... 
    return Redirect(FormsAuthentication.DefaultUrl); // will read default url from web.config 
} 
+0

왜 그런가요? (curiuos) – Blankman

+0

ASP.NET MVC 응용 프로그램에서 리디렉션을 수행하는 권장 방법은 작업에서 적절한 ActionResult를 반환하는 것입니다. 'RedirectFromLoginPage'는 단위 테스트가 불가능합니다. –

+0

위의 솔루션이 작동하지만 FormsAuthentication.DefaultUrl을 호출하는 이유는 무엇입니까? 컨트롤러에서 직접 리디렉션하고 코드에서 직접 조치를 취하는 것이 좋습니다. "RedirectToAction"은 더 나은 솔루션입니다. –

관련 문제