认证与登录
2026/10/26大约 2 分钟
认证与登录
由 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。安装模板已预置正确默认,手动改配置时注意。
OAuth 2.0 与 SSO(三方应用)
三方应用(type=3)授权与免登走 app/controller/plugin/OAuthController.php(前缀 /oauth),实现标准授权码流程:authorize 签发授权码 → token 换 access_token → userinfo 取用户 → revoke 撤销;配套 sso/verify、sso/url 支持免登跳转。这些端点不使用统一响应体,返回 OAuth 标准错误体 {error, error_description}。端点清单见响应与接口前缀。
相关接口
| 端点 | 前缀 | 说明 |
|---|---|---|
/pub/auth/captcha、/pub/auth/login、/pub/auth/logout | /pub/auth | 免登录 |
/pub/system/user、/pub/system/menu 等 | /pub/system | 免登录/登录态拉取当前用户、菜单、字典、上传 |
/sys/loginLog/index | /sys/loginLog | 登录日志查询(RBAC) |
