shopwwi/webman-auth
Composer 安装命令:
composer require shopwwi/webman-auth
包简介
webman auth
README 文档
README
安装
composer require shopwwi/webman-auth
配置文件
//路径 config/plugin/shopwwi/auth/app.php
// app_key 如果是laravel迁移过来的用户需与之前laravel的保持一致 如果是全新的 随意写个key即可
// jwt 配置项按自己需求配置即可 redis默认为false 如果要限制终端 则改为true
配置多用户
//初始化的示例 一定要改成自己实际的
'guard' => [
'user' => [
'key' => 'id', //主键
'field' => ['id','name','email','mobile'], //设置允许写入扩展中的字段 一般为数据表存在的字段
'num' => 0, //-1为不限制终端数量 0为只支持一个终端在线 大于0为同一账号同终端支持数量 建议设置为1 则同一账号同终端在线1个
'model'=> app\model\Test::class // 默认laravel
// 'model'=> [app\model\Test::class,'thinkphp'] // 指定ORM类型
]
];
// 配置示例(根据自己真实情况 user一定要存在 因为默认就是user)
// field 是可以通过jwtKey解析出来的 请勿用敏感字段 以免信息泄露
'guard' => [
'user' => [ // 普通用户
'key' => 'id', //主键
'field' => ['id','username','email','mobile','avatar'], //设置允许写入扩展中的字段 一般为数据表存在的字段
'num' => 0, //-1为不限制终端数量 0为只支持一个终端在线 大于0为同一账号同终端支持数量 建议设置为1 则同一账号同终端在线1个
'model'=> app\model\User::class //用户表模型
],
'admin' => [ // 平台用户
'key' => 'id', //主键
'field' => ['id','name','avatar'], //设置允许写入扩展中的字段 一般为数据表存在的字段
'num' => 0, //-1为不限制终端数量 0为只支持一个终端在线 大于0为同一账号同终端支持数量 建议设置为1 则同一账号同终端在线1个
'model'=> app\model\Admin::class //管理员表模型
]
];
使用方法
- 生成JWT密钥(命令行)
php webman shopwwi:auth
- 加密密码
use Shopwwi\WebmanAuth\Facade\Auth; //不可逆转 只能用password_verify来判断正确与否 $password = '123456'; Auth::bcrypt($password);
3.自动对字段进行验证且登入
use Shopwwi\WebmanAuth\Facade\Auth; //验证字段一定得和设定得角色模型相匹配可以是任何字段组 // 这里自动进行了model查库操作 如果你的不支持 请用自定义登入 $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; use app\model\User; use app\model\Admin; //返回对象$tokenObject 包含token_type,expires_in,refresh_expires_in,access_token,refresh_token $user = User::first(); $tokenObject = Auth::login($user);//$user可以是对象 同样可以是数组 // 默认为user角色 当你是admin登入时 $admin = Admin::first(); $tokenObject = Auth::guard('admin')->login($admin);
5.获取当前登入用户信息
use Shopwwi\WebmanAuth\Facade\Auth; $user = Auth::user(); //得到用户模型对象,查库数据,需查询动态数据时使用 $user = Auth::user(true); // 得到扩展数据对象,非查库数据,比如只需得到用户ID或不常更新字段使用 $admin = Auth::guard('admin')->user(); //当前登入管理员
6.退出登入
use Shopwwi\WebmanAuth\Facade\Auth; $logout = Auth::logout(); //退出当前用户 $logout = Auth::logout(true); // 退出所有当前用户终端 $logout = Auth::guard('admin')->logout(); //管理员退出
7.刷新当前登入用户token
use Shopwwi\WebmanAuth\Facade\Auth; $refresh = Auth::refresh(); $refresh = Auth::guard('admin')->refresh(); //管理员刷新
8.单独设置过期时间
use Shopwwi\WebmanAuth\Facade\Auth; use app\model\User; $user = User::first(); 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
- 开启redis后,建议开启
// 在使用过程中我们通常一个接口允许多端使用的情况 那么默认设置是不限制使用端口的
// 可当你想允许比如web端同一账号只允许存在三个终端在线或同一账号APP只允许一个终端使用
// 默认为web终端 传参client_type=web或你其它的终端client_type=ios
//config/plugin/shopwwi/auth/app.php设置
'guard' => [
'user' => [ // 普通用户
'key' => 'id', //主键
'field' => ['id','username','email','mobile','avatar'], //设置允许写入扩展中的字段 一般为数据表存在的字段
'num' => 0, //-1为不限制终端数量 0为只支持一个终端在线 大于0为同一账号同终端支持数量 建议设置为1 则同一账号同终端在线1个
'model'=> app\model\User::class //用户表模型
]
]
'jwt' => [
'redis' => false,
....
]
Auth::logout(true); // 退出所有当前用户终端
- 获取所有redis用户及终端状态
// 你可以使用redis hash对终端在线更好的管理 比如对某个用户进行下线处理,或查询用户的token有效期
// 具体业务自行根据需求去实现 本系统未对这方面业务进行封装
$guard = 'user';
Redis::hGetAll('token_'.$guard);
// 用户编号为1 的 token下线清除 ,可以批量
Redis::hDel('token_'.$guard,[1]);
- 直接调用jwt
use Shopwwi\WebmanAuth\Facade\JWT as JwtFace;
JwtFace::guard('user')->make($extend,$access_exp,$refresh_exp); //生成token 可为make($extend)
JwtFace::guard('user')->refresh($accessTime = 0); //刷新令牌 可为refresh()
JwtFace::guard('user')->verify($token); //$token可以不填则自动验证令牌 verify()
JwtFace::guard('user')->getTokenExtend($token)//$token可以不填则自动验证令牌getTokenExtend()
shopwwi/webman-auth 适用场景与选型建议
shopwwi/webman-auth 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 4.82k 次下载、GitHub Stars 达 19, 最近一次更新时间为 2022 年 03 月 14 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「auth」 「webman」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 shopwwi/webman-auth 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 shopwwi/webman-auth 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 shopwwi/webman-auth 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Laravel Multiauth package
A lightweight and powerful OAuth 2.0 authorization and resource server library with support for all the core specification grants. This library will allow you to secure your API with OAuth and allow your applications users to approve apps that want to access their data from your API.
base64 image verification captcha library for webman plugin
This package provides a flexible way to add Role-based Permissions to Laravel 6.x
Webman Hashids Used to generate a youtube-like ID from a digital ID
Email Toolkit Plugin for CakePHP
统计信息
- 总下载量: 4.82k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 19
- 点击次数: 6
- 依赖项目数: 3
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2022-03-14