2011-04-14 5 views
3

내 MVC 3 .net 응용 프로그램에는 Admin과 Student라고하는 두 영역이 있습니다. 필자는 사용자 인증을 위해 기본 제공되는 멤버십 시스템을 사용하며 두 영역간에 통합되어 있습니다. 문제는 내가 지역 고유의 로그인 페이지를 사용하고 싶다는 것입니다. 왜냐하면 두 영역이 디자인면에서 꽤 다양하기 때문입니다 (학생은 모바일 장치를 대상으로합니다). 내가 아는 한, 나는 단지 그래서,의 Web.config의 응용 프로그램에 대해 하나의 로그인 페이지를 지정할 수 있습니다 :이 경우지역별 로그인 페이지

<authentication mode="Forms"> 
    <forms loginUrl="~/Admin/Account/LogOn" timeout="2880" /> 
</authentication>` 

을, 어떻게 같은 회원 시스템에 대한 여러 로그인 페이지를 구현하는 것이?

답변

6

당신은 ASP.NET 응용 프로그램에 지정된 1 개 로그인 URL을 가질 수 있습니다 응용 프로그램의 루트.

당신의 Web.config에서
<configuration> 
    <location path="/Admin/Account/LogOn"> 
    <system.web> 
     <authorization> 
     <allow users="?"/> 
     </authorization> 
    </system.web> 
    </location> 
    <location path="/Student/Account/LogOn"> 
    <system.web> 
     <authorization> 
     <allow users="?"/> 
     </authorization> 
    </system.web> 
    </location> 
</configuration> 

루트 응용 프로그램에서 로그인 컨트롤러를 사용하는 양식 인증을 구성 : 다음

<forms loginUrl="~/LogOn" timeout="2880" /> 

에있는 Web.Config에서

, 당신이해야 할 루트 로그인 컨트롤러는 기본 작업에서 다음을 수행합니다.

// 
// GET: /LogOn 
public ActionResult Index(string returnUrl) 
{ 
    var area = returnUrl.TrimStart('/').Split('/').FirstOrDefault(); 

    if (!string.IsNullOrEmpty(area)) 
     return RedirectToAction("LogOn", "Account", new { area }); 

    // TODO: Handle what happens if no area was accessed. 
} 
4

this 백서를 읽어야합니다. 문제점에 대한 해결책이 여기에 설명되어 있습니다. 각 Araa에서

석사 로그인 컨트롤러뿐만 아니라 로그인 컨트롤러가 : 당신이 해결 방법 다음을 수행해야하므로