基于Laravel令牌的用户身份验证?

时间:2015-11-26 13:47:32

标签: php laravel authentication authorization laravel-5.1

我使用Laravel 5.1开发了一个Web应用程序,我使用Laravel Authentication进行用户授权和用户身份验证。

现在,我希望 Rest API 用于基于令牌的无状态用户授权的相同应用程序。

有没有办法直接进行,只需对当前代码进行最少的修改,或者对移动应用程序使用相同的授权,但基于令牌,如果没有,那么实现这一目标的最快方法是什么。

我已经检查了oauth2-server-laravel但是我不这么认为,这对我来说很有用。

提前致谢!!!

2 个答案:

答案 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