Auth用户认证 支持多表认证

TycoonSong

安装

composer require shopwwi/webman-auth

使用方法

  1. 生成JWT密钥
use Shopwwi\WebmanAuth\Facade\Auth;

//在任意控制器里调用一次即可 比较懒没写命令 请原谅
Auth::jwtKey();
  1. 加密密码
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); //验证令牌
719 4 2
4个评论

adminv

点赞

  • 暂无评论
641221621

nice

  • 暂无评论
liziyu

点赞 + 1

  • 暂无评论
doit

Auth::logout(true);报错
截图,Redis::hdel(),参数不能使用数组,否则会报错的,array to string convertion,github 上已经提交issue~

TycoonSong

824
积分
0
获赞数
0
粉丝数
2021-10-29 加入
🔝