我使用Laravel 5.1开发了一个Web应用程序,我使用Laravel Authentication进行用户授权和用户身份验证。
现在,我希望 Rest API 用于基于令牌的无状态用户授权的相同应用程序。
有没有办法直接进行,只需对当前代码进行最少的修改,或者对移动应用程序使用相同的授权,但基于令牌,如果没有,那么实现这一目标的最快方法是什么。
我已经检查了oauth2-server-laravel但是我不这么认为,这对我来说很有用。
提前致谢!!!
答案 0 :(得分:1)
您可以在Laravel应用程序上使用JWT-Auth进行基于令牌的身份验证。请参阅documentation了解如何使用它。
答案 1 :(得分:1)
我在上面的回答中添加了这个答案
首先,我已将"tymon/jwt-auth": "0.5.*"
添加到我的composer.json
文件并运行composer update
以提取 JWT-Auth 。
然后,我在我的Authenticate Middleware中添加了Rest请求检查,并在认证中间件中为请求添加了JWT令牌验证
public function handle($request, Closure $next)
{
if($request->has('token')){
$this->auth = JWTAuth::parseToken()->authenticate();
return $next($request);
}
else{
if ($this->auth->guest()) {
if ($request->ajax()) {
return response('Unauthorized.', 401);
} else {
return redirect()->guest('auth/login');
}
}
return $next($request);
}
}
然后我修改了登录并添加了Rest请求和Rest Rest Rest API令牌的检查
if(isRestRequest){
// grab credentials from the request
$credentials = Input::only('email', 'password');
try {
// attempt to verify the credentials and create a token for the user
if (! $token = JWTAuth::attempt($credentials)) {
return Response::json(['error' => 'invalid_credentials'], 401);
}
} catch (JWTException $e) {
// something went wrong whilst attempting to encode the token
return Response::json(['error' => 'could_not_create_token'], 500);
}
// all good so return the token
return Response::json(compact('token'));
}
休息一切正常,因为它没有太多修改,即使Auth::user()
返回带有所有值的User对象。
赞成jwt-auth