通过curl请求进行用户身份验证

时间:2017-04-26 16:59:06

标签: php laravel authentication laravel-5.3

我的每个CRM都有相同的登录页面。

这个机制是:

  1. 输入密码并登录
  2. 使用用户数据向crm​​.dev/api/auth/check上的CRM发送curl,用户数据检查CRM中是否存在用户
  3. 如果用户存在,CRM将返回成功,此后通过Auth :: user(' user_data_here')对用户进行身份验证并重定向到CRM的主页
  4. 我的问题是auth不起作用。会话中没有用户数据(因为之前的问题)。

    CRM授权代码:

    public function checkUserExists(Request $request)
    {
        $this->redirectIfAuthorized();
    
        $user = User::find($request->uid);
        if ($user) {
            return ['response' => 'LOGIN_SUCCESS'];
        }
        return ['response' => 'DB_ERROR'];
    }
    
    public function login(Request $request)
    {
        $this->validateLogin($request);
        $user = User::find($request->uid);
        $user->remember_token = $request->token;
        if ($user->update()) {
            Auth::login($user, true);
            return redirect()->intended($this->redirectPath());
        } else {
            return redirect($this->redirectAfterLogout);
        }
    }
    
    public function redirectIfAuthorized()
    {
        if (Auth::check()) {
            return redirect($this->redirectTo);
        }
    }
    

    Api路线:

    Route::group(['prefix' => 'auth'], function () {
        Route::post('check', 'LoginController@checkUserExists');
        Route::get('login', 'LoginController@login');
        Route::get('logout', 'LoginController@logout');
    });
    

    此CURL请求的登录页面逻辑

    private function sendToken($action, $user, $token)
    {
        $query = DB::table('user_base')->join('bases', 'bases.id', '=', 'user_base.base_id')
                                       ->where('user_base.user_id', $user);
    
        $result = $query->get();
        foreach ($result as $row) {
            $urlAPI = $row->url_api;
            if ($urlAPI == 'http://appliance.dev/api/auth') {
                $urlAPI .= '/check';
            }
            $rsp = $this->curl($urlAPI, array(
                'apiKey' => $this->apiKey,
                $action => true,
                'uid' => $row->base_uid,
                'token' => $token
            ));
        }
    }
    

1 个答案:

答案 0 :(得分:0)

我需要在web.php文件中使用路由而不是api.php