JianghuJS-登录鉴权

学习目标

  • 学习jianghujs鉴权登录过程、逻辑
  • 尝试自定义登录页

1. 登录过程

登录过程包括

  • 用户输入账号密码
  • 前端发送登录请求
  • 后端验证用户信息
  • 后端返回登录结果
  • 前端根据结果执行相应操作。

在登录成功后,前端会存储用户信息(localStorage, cookie),以便后续的鉴权操作。

2. 鉴权机制

鉴权是系统验证用户访问资源的权限。用户登录后会得到身份标识,如 token。每次请求需要鉴权的资源时,用户需在请求头中携带身份标识。服务端通过验证身份标识来判断用户是否有访问权限。

在江湖JS中,鉴权步骤如下:
1. 用户登录成功(login.passwordLoginresource)后,返回一个用户维度的authToken 并给页面生成cookie
2. 用户访问页面时会根据cookie查询用户信息,判断用户是否有当前页面的访问权限
3. 前端每一次请求都需要传authToken,后端根据authToken查询用户信息,判断当前用户是否有此resouce的访问权限

鉴权通过后会将用户信息挂载到当前请求的上下文 this.ctx.userInfo

登录请求示例
代码来自: /node_modules/@jianghujs/jianghu/app/view/page/loginV4.html

  1. const result = await jianghuAxios({
  2. data: {
  3. appData: {
  4. pageId: 'login',
  5. actionId: 'passwordLogin',
  6. actionData: { userId, password, deviceId: "设备ID", deviceType: 'web' },
  7. }
  8. }
  9. });
  10. if (result.data.appData.resultData.authToken) {
  11. localStorage.setItem(`${window.appInfo.appId}_authToken`, data.data.appData.authToken);
  12. localStorage.setItem(`${window.appInfo.appId}_userId`, data.data.appData.userId);
  13. localStorage.setItem(`${window.appInfo.appId}_deviceId`, deviceId);
  14. vtoast.success('登陆成功');
  15. let redirectTo = `/${window.appInfo.appId}`;
  16. if (redirectUrl) {
  17. redirectTo = decodeURIComponent(redirectUrl);
  18. }
  19. location.href = redirectTo;
  20. }

3. 自定义登录页

为了提供更好的用户体验,我们可以自定义登录页的样式和内容。

在page目录下创建/app/view/page/login.html ,会覆盖默认江湖JS默认的登录页面。

小结

通过以上课程,我们了解了江湖JS中的登录鉴权机制。可以思考以下问题:

  • 清除浏览器的localStorage 和 cookie后,然后再次访问重定向到了登录页,思考一下为什么会出现这个现象。