首页 > 解决方案 > Laravel Passport 通过会话授予 API 令牌或限制对 js 文件的访问

问题描述

问题
我正在使用jQuery AJAX调用来访问我的应用程序的 API。由于从Javascript技术上讲,我的文件可供公众访问,因此我无法将 API 凭据放入此文件中。访问受保护 API 的 Web 路由受到middleware检查用户是否具有访问权限的保护。从技术上讲,可以访问js给定正确的文件url。管理页面仍然无法访问,但现在可以访问 API。

问题
我想知道是否有办法
A) 使用会话 cookie 获取用户并检查该用户是否是管理员。

B)(首选)使js文件只能被使用它们的 Web 路由访问(在我的情况下,是管理员路由)

C)我显然没有看到的另一个选项,这将解决我的问题。

我正在为 API 路由使用 Laravel 的 Passport API 身份验证。

PS:每次都手动输入凭据,这不是一种选择。这些路线通常需要快速访问。

标签: phplaravellaravel-5.3laravel-passport

解决方案


如果我理解你的问题......你可以传递你想要的所有信息,甚至是 ajax 请求中会话中的信息,你唯一需要的是后端中用于检查会话的某种中间件(任何变量)由服务器(您的后端)生成。

该算法将类似于检查用户用于访问数据的令牌是否由服务器生成的算法。你明白这个想法吗?将要检查用户是否为管理员的“会话凭据”保存在数据库中。

要回答另一个问题,您需要一些 php 文件来处理请求,然后,如果用户有权访问 js 文件,那么您就可以提供它。

有时我使用类似的算法来创建跟踪系统并提供白色像素(.jpg 文件),唯一的变化是我不检查凭据。

注意不要忘记在您的文件中添加适当的标题(该文件服务于 js 文件) header("Content-Type: application/javascript");

我不建议使用会话信息来验证所有这些内容,因为可能存在安全问题。如果可以,请使用护照生成的令牌来验证用户是否是管理员。

我希望我在解释中说清楚,你理解这个想法。:)


推荐阅读