我的整个应用程序都有很多api路由,这些路由通过ajax响应为我的前端服务。我使用Laravel Passport xsrf令牌保护来保护我的路由和管理身份验证。但是,我们计划提供一种特定类型的用户可以使用的api。更详细地说,这是我们想要实现的(虚构)示例:
公司可以有很多空缺。 我的api路线很多,现在我想让公司所有者能够在我们的SDK上获取所有职位空缺并将其放置在他的网站上。我面临的问题:就我正确理解护照而言,个人访问令牌是我所需要的。我不需要“使用我的应用程序登录”功能(喷射),如何禁用此功能?我只希望用户访问自己的信息,而不希望其他用户访问。而且我可能将来希望让用户注册不同的api。这样他就可以针对不同的路由使用多个访问令牌,但是这些路由都集中在一个api.php路由文件中。我想我需要为此使用范围,但是如何安全地将范围分配给令牌,因为这仅是一条路由?
有人可以帮助我正确理解护照的概念吗?
答案 0 :(得分:0)
我不使用护照,但是似乎可以通过合并范围解决此问题(不需要与访问令牌绑定)。如果您正在努力获取经过身份验证的用户,则可以关注以下信息: Get authenticated user with Laravel Passport and grant password
如果您正在为如何编写范围而苦苦挣扎,这就是我的想法
companies
的公司的表employees
的员工的表vacancies
company_employee
的联接表现在,您可以在Vacancy
模型上创建范围了
class User {
public function companies()
{
return $this->hasMany(App\CompanyEmployee::class)
}
}
class Employee {
}
class Company {
}
class CompanyEmployee {
}
class Vacancy {
public function scopeMine($query)
{
$my_companies = auth()
->user()
->companies()
->select('company_id')
->pluck('company_id')
->get()
->toArray();
return $query->whereIn('company_id', $my_companies);
}
}
然后,无论您如何查询空缺(通过API或前端GUI),都可以在查询器中简单地将范围添加到查询中。
class VacancyController {
public function index()
{
return App\Vacancy::mine()->get();
}
}