我正在重构我的代码以从我的控制器中提取API。
在我的API中,通常我需要知道用户的角色,以便我可以显示正确的数据,因此我需要用户的数据。
我的第一个想法是使用基于用户/密码的基本身份验证来验证我的API访问。
我的第一个想法是实现一个过滤器,将所有的API放在同一路由组中。
中间件看起来像:
class simpleAuthMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
return Auth::onceBasic('email') ?: $next($request);
}
}
当执行请求时,一个基本的auth弹出窗口在导航过程中打扰了我。
然后,我尝试使用Guzzle:
$response = $client->request('GET', '/tournaments', [
'auth' => [Auth::user()->email,
Auth::user()->password]
]);
我有一些问题要实现它,因为它使用未加密的密码,我的数据库只有bcrypt密码。此外,我还管理来自使用Google / Facebook的社交名称认证的用户,这些用户没有密码。
然后我想我可以为每个用户添加一个令牌,并为我的API实现令牌安全性。但令牌很适合授予或不授予API,但对我来说,它不应该用于检索用户数据。即使我选择256个char令牌,它也存在远程可能性而不是2个用户获得相同的令牌。 此外,这意味着我应该在每个API调用中进行额外的查询以获取用户信息。
所以我需要做的是:
我需要的是简单的东西,问题似乎并不太复杂。我看到Laravel Spark会处理JWT,所以我会试着等到Spark发布。同时,任何想法我应该怎么做?
答案 0 :(得分:0)
实现这一目标的方法是实施JWT。使用this plugin
很容易按照教程: Token-Based Authentication for AngularJS and Laravel Apps
了解JWT: The Anatomy of a JSON Web Token
您也可以使用Auth0 APIs轻松完成。它对于小型系统是免费的。