vue3笔记(14)casdoor接入
遇到一个新需求,使用casdoor的登录入口,需要在我的项目中修改登录逻辑,这篇记录试用过程。
调用逻辑
我的设计思路是当前系统处于未登录状态(即获取不到token)时,跳转login页面;
当前系统处于已登录状态时,跳转redirect页面(默认为主页home)。
操作步骤如下:
- 在login页面触发casdoor中的
getSigninUrl
方法,跳转casdoor登录; - 输入用户名密码,跳转已配置好的/callback,本项目中为/home。跳转时URL中携带有code;
- 在home主页中请求后端验证接口,参数为URL中取到的code;
- 后端验证接口返回res中携带token(JWT),home中使用cookie储存token;
permission.ts
中使用路由守卫验证token
casdoor-vue用法
1 |
|
在main.ts
中引入:
1 |
|
在login.vue
中使用:
1 |
|
自己实现一个应用管理系统
操作步骤
- 首页地址:http://10.10.30.2:8003/
- 登录首页:http://10.10.30.2:8003/login
登录组织:http://10.10.30.2:8003/login/teco
需求描述
UMS系统负责所有用户的登录,登录进系统后,可以选择应用进行访问,采用单点登录。用token进行用户认证。
假设有应用A、B、C,成功登录访问应用A之后,在浏览器中输入应用B的UR,原理上应该是可以直接访问的。
问题:应用B的token从哪里获取?
代码执行顺序:permisson-axios/service,也就是先进行路由守卫,若无token,直接跳转应用的login。
现在需要实现:
- 若无token,处于UMS未登录状态,跳转UMS的login
- 若无token,处于UMS已登录状态,赋予token
解决方案: - 在permisson路由守卫中,判断无token,getAccount()请求新token,通过res判断处理上述实现
- 使用微前端架构,实现应用间通信,共享token信息
前端设计
- UMS-登录页:请求login接口
- UMS-首页:展示各个子系统入口,点击后登录子系统(使用静默登录方式-已登录app1,在同一浏览器输入app2的地址,这两个app属于同一组织,app2可以自动登录)
- UMS-个人中心:可以修改用户密码、邮箱、手机号,和casdoor相关联
- 子系统:初始化时请求用户个人信息及系统菜单,动态渲染菜单;菜单中包含按钮权限,需要获取后在页面渲染中处理
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!