我有一个 Laravel 5.5 应用程序,它使用开箱即用的基于 session 的身份验证。在其中一些页面上,我有需要从 API 获取数据/向 API 发布数据的 React 组件。
处理此问题的最佳做法是什么?我是否只是将 API 端点隐藏在身份验证后面?这可行,但我应该使用 Laravel Passport 来代替吗?
我玩过 Passport,似乎这可行,但我不需要用户能够创建客户端并授予第 3 方应用程序权限等。只有第一方 react 应用程序消耗数据从 Laravel 应用程序内部( View )。
从我最初的尝试来看,我似乎需要先进行登录调用才能接收访问 token ,然后再进行进一步的调用。由于用户已经在 session 中进行了身份验证,是否有更简单的方法?
我不确定 Passport 是否打算用于此目的。我宁愿花时间立即获取它,因为如果应用程序可扩展,我希望立即获取基础。
最佳答案
您可以使用 Passport 代理身份验证。使用密码授予类型的用户仍将使用其用户名/密码登录,然后在幕后向 Passport 发出内部请求以获取访问 token 。
通过传入以下参数来限制注册服务提供商时可用的路由:
Passport::routes(function ($router) {
$router->forAccessTokens();
$router->forTransientTokens();
});
这仅限制对个人 token 和刷新 token 的访问。当您运行 php artisan Passport:install 时将创建一个客户端。
设置一个中间件,将密码授予客户端 ID 和 key 合并到请求中,然后调用授权端点。然后,只需返回加密 token 并观察 api 请求的授权 header 即可。
关于使用 Passport 和 React 进行 Laravel API 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48645785/