无法使用loginUsingId()登录
根据需求,除了正常的账号密码登录外, 项目又加了一个企业微信扫码登录
企业微信扫码成功后可以找到账号的信息, 因为无法解密 密码, 所以想用非密码登录. 找到两个方法$this->guard()->loginUsingId($id) 和 $this->guard()->login($user)
1.loginUsingId()
$login_res=$this->guard()->loginUsingId($user->id);,
//$check_res=Auth::check();
//$login_res账号信息,不需要,$check_res等于false;
代码修改如下
$check_res=$this->guard()->check();
$login_res账号信息,$check_res等于true;
2.login()
$wxid='';企业微信扫码确认得到的参值;
$user=admin_users::where('wxid',$wxid)->first();
$login_res=$this->guard()->login($user);
直接报错
2的代码修改如下
$wxid='';企业微信扫码确认得到的参值;
$user=users::where('wxid',$wxid)->first();//$table='admin_users';
$login_res=$this->guard()->login($user);
不再报错
$login_res等于null,$check_res等于true;
整体代码如下
namespace App\Admin\Controllers;
use App\help\Helpers;
use App\Models\admin_users;
use App\Models\Staff;
use Encore\Admin\Controllers\AuthController as BaseAuthController;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class AuthController extends BaseAuthController
{
/**
* @param \Illuminate\Http\Request $request
*/
public function qywx(Request $request){
$params=request()->input();
if(!isset($params['code'])||empty($params['code'])){//未授权,页面不变
}
if(!isset($params['state'])||$params['state']!==config('app.qywx')['login']['state']){//携带的参数不对
}
$qywx=config('app.qywx');//企业微信的相关参数
$token_res=Helpers::qy_access_token($qywx['login']['corpsecret'],$qywx['login']['agentid']);
if(!isset($token_res['code'])||$token_res['code']!=1){
return ['message'=>'未获取到授权密令','code'=>100];
}
$token=$token_res['data'];
$url=$qywx['getuserinfo'].'?access_token='.$token.'&code='.$params['code'];
$res=Helpers::request($url);
$res['UserId']=$res['userid'];
// $user=admin_users::whereNull('is_quit')->where('wxid',$res['UserId'])->first();换成如下
$user=users::whereNull('is_quit')->where('wxid',$res['UserId'])->first();//$table='admin_users';
if(!isset($staff['user_id'])){
return ['message'=>'还未注册账号','code'=>100];
}
// $login_res=Admin::guard()->loginUsingId($user->id,true);
$login_res=$this->guard()->loginUsingId($user->id);
// $login_res=$this->guard()->login($user);
return [$login_res,$this->guard()->check()];
return [$res,$login_res];
}
}
其他关于auth的配置没变
我查过其他文档, 就说用loginUsingId()就可以了,
===================================
代码修改后,$this->guard()->check()返回true,但还是无法进入网站首页,没有生成登录token
推荐文章: