Laravel Passport授予具有会话或限制访问js文件的API令牌

时间:2018-06-06 20:41:52

标签: php laravel laravel-5.3 laravel-passport

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

问题
我想知道是否有办法要么 A)使用会话cookie来获取用户并检查该用户是否是管理员 或
B)(首选)使js文件仅可供使用它们的Web路由访问(在我的情况下,管理路由)

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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

注意不要忘记在你的文件中添加适当的标题(提供js文件的文件) 标题("内容类型:application / javascript");

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

我希望我在解释中清楚明白并理解这个想法。 :)