进度
- 引入pinia作为状态管理
- 使用了devtools
- 必须登陆后才能访问其他页面
登陆后访问权限记录
- 引入pinia
在main.ts中引入不做赘述,可见pinia官网说明
stores/token.ts
export const useTokenStore = defineStore('token', () => {
const tokenJson = ref("")
const token = computed(() => {
try {
// return JSON.parse(tokenJson.value)
// 目前的token是字符串,还没做到json
return (tokenJson.value || window.localStorage.getItem("TokenInfo") || "")
} catch (err){
ElMessage.error("json字符串格式有误,对象转换失败")
window.localStorage.setItem("TokenInfo", "")
throw err
}
})
function saveToken(data: string) {
tokenJson.value = data
window.localStorage.setItem("TokenInfo", data)
}
// 向外暴露
return { token, saveToken }
})
-
登录时将token存入浏览器缓存中
LoginView.vue
store.saveToken(res.data.token)
-
访问路径时先验证是否有了token,否则返回到login
router/index.ts
router.beforeEach((to, from, next) => {
if(to.matched.some((r) => r.meta?.requiresAuth)) {
const store = useTokenStore()
if (!store.token){
next({name: "login", query:{ redirect: to.fullPath}})
}
}
next()
})
- 登陆后返回到redirect的页面
router.push((route.query.redirect as string) || "/list")
引入技术
- pinia
- devtools
开发展示
详见就业信息搜集系统开发<2>
本次开发主要是逻辑上的修改,无过多界面变化
下一步
- 将开发中遇到的关键问题从合集中分离出来,以便检索
- 完成登录界面的验证码
- 完成注册界面
- 优化数据列表界面,增加搜索ui(暂不实现具体功能)
- 引入scrapy,单开一个服务