composer require shopwwi/webman-auth
use Shopwwi\WebmanAuth\Facade\Auth;
//在任意控制器里调用一次即可 比较懒没写命令 请原谅
Auth::jwtKey();
use Shopwwi\WebmanAuth\Facade\Auth;
//不可逆转 只能用password_verify来判断正确与否
Auth::bcrypt($password);
3.自动对字段进行验证且登入
use Shopwwi\WebmanAuth\Facade\Auth;
//验证字段一定得和设定得角色模型相匹配可以是任何字段组
$tokenObject = Auth::attempt(['name'= 'tycoonSong','password' = '123456']);
返回对象$tokenObject 包含token_type,expires_in,refresh_expires_in,access_token,refresh_token
// 默认为user角色 当你是admin登入时
$tokenObject = Auth::guard('admin')->attempt(['name'= 'tycoonSong','password' = '123456']);
4.自定义登入
use Shopwwi\WebmanAuth\Facade\Auth;
返回对象$tokenObject 包含token_type,expires_in,refresh_expires_in,access_token,refresh_token
$user = Users::first();
$tokenObject = Auth::login($user);//$user可以是对象 同样可以是数组
// 默认为user角色 当你是admin登入时
$admin = Admin::first();
$tokenObject = Auth::guard('admin')->login($admin);
5.获取当前登入用户信息
$user = Auth::user(); //得到用户模型对象,查库数据,需查询动态数据时使用
$user = Auth::user(true); // 得到扩展数据对象,非查库数据,比如只需得到用户ID或不常更新字段使用
$admin = Auth::guard('admin')->user(); //当前登入管理员
6.退出登入
$logout = Auth::logout(); //退出当前用户
$logout = Auth::logout(true); // 退出所有当前用户终端
$logout = Auth::guard('admin')->logout(); //管理员退出
7.刷新当前登入用户token
$refresh = Auth::refresh();
$refresh = Auth::guard('admin')->refresh(); //管理员刷新
8.单独设置过期时间
Auth::accessTime(3600)->refreshTime(360000)->login($user);
Auth::accessTime(3600)->refreshTime(360000)->attempt(['name'= 'tycoonSong','password' = '123456']);
Auth::accessTime(3600)->refresh();
9.获取报错信息 Auth::fail();
//默认设定是不会报错的
$user = Auth::user(); //当没有登入或异常时返回的null 用于用户可登入或可不登入场景里 只需要判断 $user == null 即可
//而比如在会员中心调用时
$user = Auth::fail()->user(); //走的是异常处理类https://www.workerman.net/doc/webman/exception.html
10.开启redis后,建议开启
// 在使用过程中我们通常一个接口允许多端使用的情况 那么默认设置是不限制使用端口的
// 可当你想允许比如web端同一账号只允许存在三个终端在线或同一账号APP只允许一个终端使用
// 默认为web终端 传参client_type=web或你其它的终端client_type=ios
//config/plugin/shopwwi/auth/app.php设置
'guard' => [
'user' => [
'key' => 'id',
'field' => ['id','name','email','mobile'], //设置允许写入扩展中的字段
'num' => -1, // -1为不限制终端在线数量 0为只允许登入一个设备 大于0为每个终端同时在线数量 建议设置为1 则每个终端在线1个
'model'=> Shopwwi\B2b2c\Models\Users::class
]
],
Auth::logout(true); // 退出所有当前用户终端
11.直接调用jwt
//本来是打算直接用tinywan/jwt的 可是跟我的业务逻辑不太匹配 因此改造了一些
use Shopwwi\WebmanAuth\Facade\JWT as JwtFace;
JwtFace::make(array $extend,int $access_exp = 0,int $refresh_exp = 0); //生成token
JwtFace::refresh(int $accessTime = 0); //刷新令牌
JwtFace::verify($token); //验证令牌
点赞
nice
点赞 + 1
Auth::logout(true);报错
,Redis::hdel(),参数不能使用数组,否则会报错的,array to string convertion,github 上已经提交issue~
确实如你所述 已修正 谢谢反馈
我得把配置文件改成符合这规则的才能用 thinkORM?
这是webman的标准哦