angularjs - 我应该如何确保访问后端呈现的前端路由的用户经过身份验证?

标签 angularjs rest authentication laravel-5 oauth-2.0

我正在使用 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 ,但以下看起来很有趣:

  • Simple AngularJS Authentication with JWT : AngularJS配置
  • Token-Based Authentication for AngularJS and Laravel Apps : 与Laravel的联系
  • JSON Web Token Tutorial: An Example in Laravel and AngularJS
  • 关于angularjs - 我应该如何确保访问后端呈现的前端路由的用户经过身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35906323/

    相关文章:

    javascript - 使用 ng-bind 绑定(bind)多个值

    angularjs - 如何向 Ionic/Phonegap 项目添加测试?

    c# - 如何在WPF Catel Framework中控制两个以上角色的访问权限?

    php - 这个登录系统安全吗?

    c# - 身份验证失败,因为远程方已关闭传输流

    基于单选的AngularJS过滤器

    html - Angular 谷歌地图填充空间

    rest - 在 Unity3d 中运行 REST 服务器

    django - 如果内容在缓存 TTL 到期之前发生更改,则更新缓存

    javascript - REST API分页如何保证数据一致性