我有一个Laravel 5.5应用程序,它使用基于会话的auth开箱即用。在其中一些页面中,我已经对需要从/向API发送/发布数据的组件做出反应。
处理此问题的最佳做法是什么?我只是隐藏身份验证背后的API端点吗?这可行,但我应该使用Laravel Passport吗?
我玩过Passport,看起来这可行但我不需要用户能够创建客户端并授予第三方应用程序权限等。只有第一方反应应用程序消耗数据从laravel应用程序内部(视图)。
从我最初的实验开始,似乎我需要首先进行登录调用以接收访问令牌,然后进行进一步的调用。由于用户已经在会话中进行了身份验证,有更简单的方法吗?
我不确定Passport是否打算用于此目的。我宁愿花时间去做,因为如果应用程序可以缩放,我现在想立即获得基础。
答案 0 :(得分:1)
您可以使用Passport代理身份验证。使用密码授予类型的用户仍然会使用他们的用户名/密码登录,然后在幕后向Passport发出内部请求以获取访问令牌。
通过传入来限制在服务提供商中注册时可用的路由:
Passport::routes(function ($router) {
$router->forAccessTokens();
$router->forTransientTokens();
});
这限制了对个人令牌的访问并仅刷新令牌。运行php artisan passport:install
时将创建一个客户端。
设置中间件以将密码授予客户端ID和秘密与请求合并,然后调用授权端点。然后,只需返回加密的令牌并观察授权标头以获取对api的请求。