0

我创建了一个使用 laravel 默认注册(auth)的网络应用程序,我已经从 taylor 教程测试了护照 oauth2 客户端访问令牌。我的网络应用程序使用 angular js 作为 UI 和 laravel 作为后端,所以我需要创建用户,当创建用户请求从 angular 发送时,然后创建一个全局访问令牌以在我对 angular 的响应中给出它,然后在所有以后的请求中我使用它来验证请求。

实际上我想为我的网络应用程序实现 oauth2 身份验证,但到目前为止我已经搜索了很多,但我找不到任何有用的分步教程。

任何人都可以帮助我吗?

仅供参考:我正在使用启用护照的 laravel 5.3 和前端的 angular js 1.5。

4

3 回答 3

1

在此处使用基于 JWT 令牌的身份验证您可以了解 jwt https://jwt.io/

于 2016-11-10T05:43:23.783 回答
0

我已经解决了这个问题。我已经为登录和注册定制了 laravel 身份验证,并创建了一个方法,该方法将向服务器发送请求以创建用于注册用户或登录的访问令牌。我已经设置了护照并像 taylor 在他的教程中所做的那样对其进行了测试。然后在AuthenticatesUsers.php我改变了sendloginResponse方法响应,如:

protected function sendLoginResponse(Request $request)
    {
        isset($request->token) ? $token = $request->token : $token = null;//Check if login request contain token

        $request->session()->regenerate();

        $this->clearLoginAttempts($request);

        return $this->authenticated($request, $this->guard()->user())
            ? $this->StatusCode($token,$this->credentials($request),$status=false) : $this->StatusCode($token,$this->credentials($request),$status=true);

    }

我已经添加了这个方法来请求访问令牌并将其作为 json 响应发送:

public function StatusCode($token,$user,$status){

        if( $token != null && $token != ''){
            return ($status == true) ? response()->json(GetToken($user),200) : response()->json(['Message' => 'Failed to log in'],403);

        }

        function GetToken($userobject)
        {
            $http = new Client;

            $response = $http->post('http://localhost/iranAd/public/oauth/token', [
                'form_params' => [
                    'grant_type' => 'password',
                    'client_id' => '1',
                    'client_secret' => 'xKqNbzcXyjySg20nVuVLw5nk5PAMhFQOQwRTeTjd',
                    'username' => $userobject['email'],
                    'password' => $userobject['password'],
                    'scope' => '',
                ],
            ]);

            return json_decode((string) $response->getBody(), true);
        }

        function RefreshToken($token,$userobject)
        {
            $http = new Client;

            $response = $http->post('http://localhost/iranAd/public/oauth/token', [
                'form_params' => [
                    'grant_type' => 'refresh_token',
                    'refresh_token' => 'refresh_token',
                    'client_id' => '1',
                    'client_secret' => 'xKqNbzcXyjySg20nVuVLw5nk5PAMhFQOQwRTeTjd',
                    'username' => $userobject['email'],
                    'password' => $userobject['password'],
                    'scope' => '',
                ],
            ]);

            return json_decode((string) $response->getBody(), true);
        }

            return ($status == true) ? response()->json(GetToken($user),200) : response()->json(['Message' => 'Failed to log in'],403);

    }

注册用户的程序相同。

于 2016-11-23T10:33:08.247 回答
0

这篇文章的目的不是回答(正如已经回答的那样),而是为最终需要更多主题信息的其他读者提供更多信息。

这是关于这个问题的非常有用的教程,用 CORS 问题解决方案实现 Vue.js 2.0 和 Laravel 5.3 检查这个和下一个剪辑。

其中一些你可以在这里找到更短的形式

于 2017-01-24T02:01:18.983 回答