2016-12-09 12 views
1

我正在创建一个后端系统,我希望将VueJS2用于Laravel后端。我面对此刻的问题,同时保持利用Vue公司的历史模式的“整洁”的URL(无hashbangs)正在整合所有这些组合起来:VueJS2和Laravel Auth(和历史记录模式)

const router = new VueRouter({ 
    routes, 

    mode: 'history' 
}) 

我的方式风扇Laravel处理身份验证,因此我试图在这个系统中使用它作为进入SPA的入口点,但这样做打破了历史模式。

在我的路线文件我已经添加,它致力于让浏览器和返回键等的硬爽口的Vue捕捉路线,这工作得很好:

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文档:https://laravel.com/docs/5.3/passport

这是很好的包装用于此目的:https://github.com/tymondesigns/jwt-auth

+0

我不知道这是只对API的工作,而不是面向客户的?当我说我的后端意味着更多的内联网型系统,在那里的客户端访问通过浏览器直接的。所以我希望他们进入登录页面,使用他们的凭证登录,然后才能进入SPA。或者这仍然是解决方案? – Reactive

+0

这仍然是解决方案。你必须明白,授权必须由SPA来处理。我的意思是登录页面必须是在SPA,那么你要发送凭据,后台,再从后台回来JWT并将其存储在SPA,然后装在JWT每个HTTP请求授权您的请求头。 –