认证与登录
2026/10/26大约 1 分钟
认证与登录
由 app/controller/AuthController.php(前缀 /pub/auth)签发 JWT,LoginLogController.php(/sys/loginLog)记录登录流水。默认超管账号 admin / admin123(首次登录后请立即改密)。
登录流程
POST /pub/auth/captcha取图形验证码(返回image+uuid)。POST /pub/auth/login携username/password/code/uuid:- 校验验证码 → 校验账号存在且
status=1→passwordVerify()验密。 - 通过后写入
last_login_time/last_login_ip,用JwtToken::generateToken()签发。
- 校验验证码 → 校验账号存在且
- 返回
{accessToken, refreshToken, user, unreadNotifyCount},accessToken形如Bearer xxx,exp默认time()+7200(2 小时)。
user payload:id、sid、username、nickname、avatar、account_type、is_admin 等。is_admin 只是便捷标记,功能权限仍以 RBAC 查库为准。
令牌使用与失效
- 请求携
token/Authorization头(Bearer前缀会被剥离),AuthCheck中间件校验有效性。 - 业务失败统一返回
{code, msg};未登录/失效返回401,前端拦截器触发登出跳登录。 - 登录成功广播事件
user.loggedin(EventRegistry::emit),登录流水经user.loginLog事件异步落库。
JWT_ALG 必须是 HS256
.env 里 JWT_ALG 误写成 HS25 等非法算法会导致签发异常、表现为登录无响应。合法值如 HS256。安装模板已预置正确默认,手动改配置时注意。
相关接口
| 端点 | 前缀 | 说明 |
|---|---|---|
/pub/auth/captcha、/pub/auth/login、/pub/auth/logout | /pub/auth | 免登录 |
/sys/loginLog/index | /sys/loginLog | 登录日志查询(RBAC) |
