Skip to content

用户认证与访问控制

Login.vue 承担了系统的安全门户职责。它不仅负责前端表单的原子级校验,还处理了后端返回的 JWT (JSON Web Token) 存储,并根据用户角色的 is_admin 字段执行不同的路由分发策略。


组件在单一视图内通过 isLogin 状态实现登录与注册逻辑的平滑切换。

JWT 持久化

登录成功后将 access_token 写入 localStorage,作为后续 API 请求的 Authorization 凭证。

角色路由分发

自动识别 user.is_admin 标志位,管理员强制重定向至 /admin 后台,普通用户则通过 emit 通知主页刷新。

表单原子校验

集成密码长度截断检查与正则表达式邮箱格式校验,减少无效的后端请求开销。

  1. 模式选择:切换 isLogin 状态,动态调整表单字段渲染(如注册模式下展示学校、邮箱)。
  2. 预检校验:执行本地客户端校验(密码 > 6位,邮箱格式等)。
  3. 通信交互:通过 axios/auth/login/auth/register 发起异步请求。
  4. 令牌存储:解析响应体,持久化用户信息与认证令牌。
  5. 权限跳转:根据角色权限执行路由分发或组件事件上报。

字段名类型必填说明
usernamestring用户唯一标识
passwordstring原始密码字符串
real_namestring仅注册真实姓名,用于报表抬头
emailstring仅注册符合正则规则的邮箱
{
"access_token": "eyJhbGciOiJIUzI1NiI...",
"user": {
"username": "admin",
"is_admin": true
}
}