就业信息搜集系统开发<3>

发布时间 2023-03-22 21:11:22作者: P1nk64

进度

  1. 引入pinia作为状态管理
  2. 使用了devtools
  3. 必须登陆后才能访问其他页面

登陆后访问权限记录

  1. 引入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 }
})
  1. 登录时将token存入浏览器缓存中
    LoginView.vue
    store.saveToken(res.data.token)

  2. 访问路径时先验证是否有了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()
})
  1. 登陆后返回到redirect的页面
    router.push((route.query.redirect as string) || "/list")

引入技术

  1. pinia
  2. devtools

开发展示

详见就业信息搜集系统开发<2>
本次开发主要是逻辑上的修改,无过多界面变化

下一步

  1. 将开发中遇到的关键问题从合集中分离出来,以便检索
  2. 完成登录界面的验证码
  3. 完成注册界面
  4. 优化数据列表界面,增加搜索ui(暂不实现具体功能)
  5. 引入scrapy,单开一个服务