现在我正在使用类似的东西来验证我的基站上的用户:
if (Auth::attempt($request->only(['id', 'password']))) {
//
}
Run Code Online (Sandbox Code Playgroud)
如何修改此代码以使用自定义列作为用户名? https://laravel.com/docs/5.3/passport#password-grant-tokens
我已经为Laravel 5.3 设置了Laravel Passport包,正如官方文档(https://laravel.com/docs/5.3/passport#introduction)中所述.
我希望API由移动应用程序使用,因此我尝试实现密码授予令牌.我创建了一个密码授予客户端,以及令牌请求进程......
$response = $http->post('http://my-app.com/oauth/token', [
'form_params' => [
'grant_type' => 'password',
'client_id' => 'client-id',
'client_secret' => 'client-secret',
'username' => 'my@email.com',
'password' => 'my-password',
'scope' => '',
],
]);
Run Code Online (Sandbox Code Playgroud)
...按预期工作,为我的一个用户返回访问令牌和刷新令牌.
但是现在我想定义一些范围,以便限制用户的访问权限......再次按照文档,我在AuthServiceProvider.php的启动方法中定义它们,如:
Passport::tokensCan([
'admin' => 'Perform every action',
'user' => 'Perform only normal user actions',
]);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,如果"恶意"普通用户请求一个令牌(使用上面的POST调用)指定'scope' => 'admin',他或她将获得一个"管理员"令牌......这不是我想要的.
因此,我想知道在这种情况下工作流如何有效地限制对普通用户的访问,以及我在哪里实现范围验证逻辑.
提前致谢.
我正在构建一个API,我正在使用Laravel Passport进行身份验证.
API正用于我们的移动应用程序,因此我们使用密码授予客户端.
一切都很好,用户可以登录以获取访问令牌.我们创建了一个允许用户注册的注册端点.我们现在还需要API来返回访问令牌.
浏览文档无法以编程方式创建访问令牌.
如何在控制器中为密码授予客户端创建访问令牌?我显然不想对我自己的API执行HTTP请求来获取它.
我知道我可以使用个人访问授权客户端并调用createToken用户模型,但这意味着访问令牌与不同的客户端相关联.这对我来说似乎不对.
我试图弄清楚如何处理Passport包中的密码授予令牌.我应该将client_id和client_secret存储在.env文件中,还是在请求令牌时直接从数据库中获取值?