php - 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:每次都手动输入凭据,这不是一种选择。这些路线通常需要快速访问。
解决方案
如果我理解你的问题......你可以传递你想要的所有信息,甚至是 ajax 请求中会话中的信息,你唯一需要的是后端中用于检查会话的某种中间件(任何变量)由服务器(您的后端)生成。
该算法将类似于检查用户用于访问数据的令牌是否由服务器生成的算法。你明白这个想法吗?将要检查用户是否为管理员的“会话凭据”保存在数据库中。
要回答另一个问题,您需要一些 php 文件来处理请求,然后,如果用户有权访问 js 文件,那么您就可以提供它。
有时我使用类似的算法来创建跟踪系统并提供白色像素(.jpg 文件),唯一的变化是我不检查凭据。
注意不要忘记在您的文件中添加适当的标题(该文件服务于 js 文件) header("Content-Type: application/javascript");
我不建议使用会话信息来验证所有这些内容,因为可能存在安全问题。如果可以,请使用护照生成的令牌来验证用户是否是管理员。
我希望我在解释中说清楚,你理解这个想法。:)
推荐阅读
- c# - 如何将目标嵌套在 .csproj 文件中的另一个目标中?
- java - Intelij 对本地 jar 文件中的类发出编译错误
- python - 为 TensorFlow 导入 librosa 时出错:找不到 sndfile 库
- drag-and-drop - Phaser 3 在拖动对象时发生碰撞
- machine-learning - 不同分支在深度神经网络中的贡献不同
- c# - 从 MassTransit 故障消息中获取异常属性
- python - 命令中的 Discord.py 命令?
- node.js - 为什么这个简单的文件上传未定义 Multer req.file?
- php - PHP While 循环没有中断,但可以在调试器中使用?
- python - Python Pandas 数据框用户搜索功能