2013-10-18 2 views
0

누군가가 도와 줄 수 있기를 바란다는 혼란스러운 문제가 있습니다. ...Perl 촉매 - URL의 이중 경로 방지. http : // mydomainname/login/login

현재 Catalyst 응용 프로그램을 만들고 있는데, 내가 갈 수있는 간단한 로그인 페이지가 있습니다. URL :

이것은 완벽하게 작동합니다. html 페이지를 가져오고 참조하는 CSS 파일을 사용하여 예쁜 로그인 페이지를 만듭니다.

그러나 나는 또한 다음 URL로 이동하는 경우 :

http://mydomainname/login/login 

내가 아직 만들어 로그인 페이지가 그냥 기본 버튼, 텍스트 상자를 표시하고 등등 CSS를하지 않고이 시간을 제외하고 표시됩니다, 스타일링을 위해 CSS 파일에 액세스하지 않는 것처럼 보입니다.

이 '로그인'경로에 모든 시간을 발생합니다

예.

http://mydomainname/login/login 
http://mydomainname/login/login/login 
http://mydomainname/login/login/login/login/login 

등등은 ...

내가 원하는 http://mydomainname/login/login을 위해 일을하거나 예를 들어 단지 http://mydomainname/login에 리디렉션하지 분명하다.

임 내 Login.pm 컨트롤러 내가 가진 : 컨트롤러가 보일 것입니다 방법 첫째

sub default : Private { 
    my ($self, $c) = @_; 

    $c->forward('login'); 
} 

sub login : Path('/login') { 
     my ($self, $c) = @_; 

     $c->stash->{title} = 'Login Page'; 
     $c->stash->{pagetype} = "html"; 
     $c->stash->{template} = "login.html"; 
} 

이 무엇입니까? 무엇을 내가을 발생하는에서이 두 URL 경로 문제를 방지하려면 어떻게해야합니까 (예를 들어 http://mydomainname/login/login 또는 http://mydomainname/login/login/login/login) 많은 명시 적으로

답변

0

일치하지 않습니다 첫 번째 /login은에서 일치되고있다 컨트롤러 이름 및 두 번째 /login이 작업 이름 (하위)과 일치합니다.

전체 login 서브를 Root 컨트롤러로 옮기거나 로직을 기존 default 핸들러로 옮길 필요가 있습니다. 개인적으로, 저는 로그인과 로그 아웃 같은 동작을 루트 컨트롤러에 넣는 것을 선호합니다. 그들은 그들에게 사슬로 묶여 있거나 의존하고있는 어떤 것도 가질 것 같지 않습니다. Login.pm에는 다른 작업이나 방법이 있습니까?

누락 된 CSS 스타일은 login.html의 상대 경로 문제이거나 주 프로그램의 정적 리소스 구성 문제 일 수 있습니다. 브라우저의 Dev Tools로 디버깅 할 수 있어야합니다.

0

더이되어야한다고 말할

이와 당신의 도움이 많이 감사합니다

, 감사 인수 :

sub login :Path('/login') :Args(0) { 

그런 다음 컨트롤러가 /login/etc/etc/etc

+0

'http : // mydomainname/login/etc/etc'로가는 경우에도 CSS 스타일링을 제외하고'로그인 '페이지가 계속 표시됩니까? 다른 것이 있거나 할 수있는 것이 있습니까? 당신의 도움을 주셔서 감사합니다 –