【发布时间】:2019-10-04 03:27:52
【问题描述】:
每个 CRM 都有相同的登录页面。
这些是步骤:
- 输入密码并登录
- 在 crm.dev/api/auth/check 上将 curl 发送到 CRM,检查用户数据,检查用户是否存在于 CRM 中
- 如果用户存在,CRM 返回成功,之后通过 Auth::user('user_data_here') 对用户进行身份验证并重定向到 CRM 的主页
我的问题是身份验证不起作用。并且没有用户数据存储在会话中(因为之前的问题)。
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
));
}
}
【问题讨论】:
标签: php laravel authentication laravel-5