2016-12-09 1 views
1

Laravel 백엔드에서 VueJS2를 사용하려는 백엔드 시스템을 만들고 있습니다.VueJS2 및 Laravel Auth (및 기록 모드)

const router = new VueRouter({ 
    routes, 

    mode: 'history' 
}) 

Laravel가 인증을 처리하고 같은 내가 곧 길이의 팬이다 : 뷰의 역사 모드를 이용한 '깔끔한'URL이 (NO hashbangs)를 유지하면서 내가 순간에 직면하고있어 문제는 모두 함께이 통합되어 SPA에 진입 점으로이 시스템에서 사용하려고 시도했지만 그렇게하면 기록 모드가 중단됩니다. 내 경로에

내가 브라우저와 뒤로 가기 버튼 등의 하드 상쾌한 할 수 있도록 작동하는 뷰 캡처 경로를 추가 한 파일이 잘 작동합니다 :

Route::get('/{vue_capture?}', function() { 
    return view('home'); 
})->where('vue_capture', '[\/\w\.-]*'); 

그러나 내가 'Laravel 인증을 사용하려면 무엇에 액세스하기 전에 로그인을 강제로 작동하지만 역사 모드 나누기 다음 확인, 추가했습니다 :

if (Auth::check()) { 
    Route::get('/{vue_capture?}', function() { 
     return view('home'); 
    })->where('vue_capture', '[\/\w\.-]*'); 
} 
else { 
    // the home controller has the auth middleware in the __construct 
    Route::get('/', '[email protected]'); 
} 

나는 VUE 캡처 경로의 끝 부분에 미들웨어를 추가 해봤를하지만 보이지 않았다 무엇이든 할 수 있습니다.

감사합니다.

답변

0

모든 백엔드에서 작동하는 SPA를 얻으려면 JWT를 기반으로 한 Api 인증을 사용해야합니다.

이 그것에 대해 Laravel의 문서입니다 : 그는 API 작업이 아니라 고객이 직면위한 경우 https://github.com/tymondesigns/jwt-auth

+0

잘 모르겠어요 : https://laravel.com/docs/5.3/passport

이이 목적을 위해 좋은 패키지가 무엇입니까? 내가 백엔드라고 할 때 브라우저를 통해 클라이언트가 직접 액세스 할 수있는 인트라넷 유형 시스템을 의미합니다. 따라서 로그인 페이지로 이동하여 자격 증명으로 로그인 한 다음 SPA 만 입력하면됩니다. 아니면 여전히 해결책입니까? – Reactive

+0

이것은 여전히 ​​해결책입니다. auth는 SPA에서 처리해야한다는 것을 이해해야합니다. 로그인 페이지가 SPA에 있어야한다는 것을 의미합니다. 그런 다음 백엔드에 자격 증명을 보내야하고 백엔드에서 JWT를 가져 와서 SPA에 저장 한 다음 모든 HTTP 요청의 헤더에 JWT를 첨부하여 요청 권한을 부여해야합니다. –