我正在使用 Laravel 和 Angular 编写一个网络应用程序。
在前端,Laravel 用于创建基本模板,但在其他方面由 Angular 控制。在后端,laravel 用于创建一个 Restful API。
我有几条这样的路线:
Route::group(['domain' => 'domain.com'], function() {
Route::get('/', ['as' => 'home', function () {
return view('homepage');
}]);
Route::get('/login', ['as' => 'login', function () {
return view('login');
}]);
//users should be authenticated before accessing this page
Route::get('/dashboard', ['as' => 'dashboard', function () {
return view('dashboard');
}]);
});
Route::group(['domain' => 'api.domain.com', 'middleware' => ['oauth']], function() {
Route::post('/post/create', ['uses' => 'PostController@store']);
Route::get('/post/{id}', ['uses' => 'PostController@show']);
//other API endpoints
// ...
});
我想确保我的
domain.com/dashboard
URL 只能由经过身份验证的用户访问。在我的后端,我有 OAuth为我的 API 路由实现,确保访问这些路由的用户是真实的。 Laravel 的
Auth::once()
OAuth 库使用它来确保用户凭据正确,然后生成 access_token
.自 Auth::once()
是“无状态”功能,不使用 session 或 cookie,我无法使用 Auth::check()
确保在呈现仪表板页面之前对用户进行身份验证。我应该如何检查用户是否尝试访问
domain.com/dashboard
已认证?我应该发送 access_token
当我从 /login
转发用户时在标题中至 /dashboard
?或者我应该实现 Laravel 的基于 session /cookie 的身份验证?编辑:按此:Adding http headers to window.location.href in Angular app我无法使用
Authorization
将用户转发到仪表板页面标题。为了将我的 API 重用于我的移动应用程序,我非常喜欢使用某种基于 token 的身份验证。
最佳答案
我建议使用 JWT
( JSON Web Tokens ) 来控制身份验证。
我认为有几个教程可以与 Lavarel
一起使用。和 AngularJS
.我更喜欢 Python
我使用 Flask
,但以下看起来很有趣:
AngularJS
配置Laravel
的联系关于angularjs - 我应该如何确保访问后端呈现的前端路由的用户经过身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35906323/