2017-10-30 19 views
1

operator/admin이 사용자로 로그인 할 수있는 기능을 구현하고 싶습니다. 사용자 자격으로 무언가를 수행 한 다음 다시 돌아와 운영자/관리자로 계속사용자와 로그인하는 방법은 어떻게 변경합니까?

/as_user/:user_id 경로 아래에서 전체 응용 프로그램을 탑재하려고합니다. 그래서 요청이 왔을 때 나는 :user_id으로 세션을 조정했다.

나는

$app->routes->route('/as_user/:app_user')->detour(app => $app); 

detour을 시도하지만,이 경우 GET /as_user/17/packages 요청

이 또한 내가 ?U=17 쿼리 매개 변수를 추가 할 생각 무한 루프에 응용 프로그램 가을에 올 때. 그러나 나는 그런 식으로 코드를 재 작성하는 방법과 장소를 모릅니다. 모든 링크는 ?U=17과 함께 렌더링되어야합니다.

다른 사용자와 로그인하는 방법을 알려주지 만 여전히 admin 상태를 유지하십시오.

답변

0

내가 답을 찾을 같다 :

$r->under('/as_user/:user_id', sub{ 
    # FIX THE SESSION HERE. Just like: 
    # $_[0]->session->{ user_id } = _[0]->match->stack->[-1]->{ user_id }; 
    return 1; # Required to not break the dispatch chain 
})->route('/')->detour('App'); 

대신 응용 프로그램 인스턴스의 당신이 응용 프로그램 클래스를 통과해야하고 Mojolicious 그것 자체를 인스턴스화합니다.

추신. 무한 루프는 순환 참조 때문일 수 있습니다. (그러나 Mojolicious 체크 심판 here)

UPD 무한 루프 때문에 bug