Laravel护照-CreateFreshApiToken没有laravel_token cookie

ego*_*ego 4 laravel laravel-5 laravel-passport

一旦将CreateFreshApiToken添加到Kernel.php的“ Web”中间件组中,它应该将laravel_token cookie附加到通过Web中间件发出的每个请求的响应中,不是吗?例如,该组中应该接收Cookie的所有内容:

Route::group(['middleware' => ['web']], function () {
    Route::get('/{vue?}', function () { return view('index'); } )->where('vue', '[\/\w\.-]*');
});
Run Code Online (Sandbox Code Playgroud)

我正在尝试替换使用client_secret的当前工作流,因为看到oauth2和网站在同一个域中,借助CreateFreshApiToken的自耗式api的想法对它有很好的帮助,尽管在这一点上我还不是确定我是否做对了。

San*_*esh 9

根据要求引用我的评论

“您不会通过这种方法收到令牌。创建的cookie将包含加密的令牌,并且护照令牌保护人员将使用它来验证cookie附带的请求。因此,auth:api无需手动附加任何中间件,即可对中间件保护的路由进行验证。因此,在首次登录(应该是传统方式)之后,您需要至少重新加载页面一次,以便CreateFreshApiToken中间件创建cookie 。”

除此之外,您可以使用SPA的密码授予。这就是您在网上看到90%的教程的结果。但是它们将客户端ID和密码存储在JavaScript文件中,从安全角度来看,这是非常糟糕的做法。为了克服这个问题,您可以创建一个代理路由/中间件,以注入客户端ID和密码。因此,您只需要传递电子邮件和密码即可获取访问令牌和刷新令牌。

但是同样,您需要将访问令牌和刷新令牌存储在浏览器的本地存储中,这是开发人员通常要做的。但是令牌变得容易受到XSS攻击。因此,在使用SPA身份验证时,需要从安全角度考虑很多角度。

为了克服上述所有问题,您需要将令牌安全地存储在HttpOnly cookie中,然后使用中间件从cookie中解析令牌并根据任何API请求对用户进行身份验证。这是使用SPA进行身份验证的最实用,最安全的方法。Laravel Passport可以做到这一点,但是需要一些自定义登录路径的初步工作才能实现。Passport缺乏适当的文档资料,对其使用和工作情况也缺乏清晰度。

这些https://web.archive.org/web/20141208132104/http://alexbilbie.com/2014/11/oauth-and-javascript/上有一些不错的资源

http://esbenp.github.io/2017/03/19/modern-rest-api-laravel-part-4/

https://stormpath.com/blog/token-auth-spa

  • 再次感谢。我同意,找到有关护照问题的信息有点困难。顺便说一句,您知道如何从 laravel 控制器获取已颁发给当前用户的 oauth2 访问令牌吗?问题是 - 我目前正在构建一个使用节点服务器向客户端推送通知的应用程序,我需要以某种方式验证节点服务器的用户 - 决定 accessToken 是最简单的方法 - 1)将其传递给服务器并保存它作为套接字字段 2) 在控制器中使用 accessToken 将数据发布到节点服务器,套接字中的令牌将与来自 laravel 的数据进行比较。想法? (3认同)