当前位置: 首页 > news >正文

贵阳设计网站建设中企视窗做网站怎么样

贵阳设计网站建设,中企视窗做网站怎么样,做动画 的 网站有哪些内容,百度如何做网站登录业务实现: 登录成功/失败实现 -> pinia管理用户数据及数据持久化 -> 不同登录状态的模板适配 -> 请求拦截器携带token(登录鉴权) -> 退出登录实现 -> token失效(401响应拦截) 1. 登录成…

 登录业务实现:

登录成功/失败实现  ->  pinia管理用户数据及数据持久化  ->  不同登录状态的模板适配   ->  请求拦截器携带token(登录鉴权  ->  退出登录实现  ->  token失效(401响应拦截)


 

1. 登录成功/失败实现

表单校验通过时,封装登录接口,调用登录接口,分别处理 登录成功和登陆失败的情况。

登录成功,则提示用户,并跳转首页

登录失败,报错。-> 拦截器统一报错(配置一次 多接口生效)

2. pinia管理用户数据及数据持久化

因为用户数据可能在多组件中进行共享,使用 pinia对用户数据进行管理。与数据有关的操作置于pinia中,组件只负责触发action函数

(1) pinia管理数据 

// 定义store
export const useUserStore = defineStore('模块名', ()=>{// 1. 定义stateconst userInfo = ref({})// 2. 定义actionconst getUserInfo = () => {...}// 3. 以对象的形式return state/actionreturn {...}
})
// 使用store
import { useXXXStore } from '@/stores/XXXStore'const xxXStore = useXXXStore()
xxXStore.getXX()

 (2)持久化用户数据

token:用户数据中 用于标识当前用户是否登录,持续一段时间会过期。

由于pinia是基于内存的,刷新会丢失,为保持登陆状态(刷新不丢失),要配合持久化进行存储

-> 操作state时,自动把用户数据在本地的localStore中也存一份,(刷新时 从localStore中先取

操作步骤:

1)安装插件包: npm i pinia-plugin-persistedstate

2)注册插件:

// main.js 入口文件中
const pinia = createPinia()
pinia.use(piniaPluginPersistedState)

3)持久化配置 存入localStore:

// 定义store中,添加配置项(第三个参数),用于持久化配置
defineStore('',()=>{...
},{// 持久化配置,存入lspersist:{enabled: true}
})

3. 不同登录状态的模板适配(多模板适配)

多模板适配 思路:登录时显示第一块,非登录时显示第二块

判断条件:是否有token

<template v-if="userStore.userInfo.token">...
</template>
<template v-else>...          
</template>

4. 请求拦截器携带token

token作为用户标识,多个接口要正确携带token才能正确显示数据 -> 在接口调用时携带token -> 采用拦截器携带(便于 统一控制)

解决: 请求拦截器可以在接口发起前 对请求参数进行操作。通常token被注入到请求header中,格式按照后端要求的格式进行拼接

// utils/http.js中// axios请求拦截器
httpInstance.interceptors.request.use(config => {// 请求拦截器携带token(->按后端要求拼接token数据),使得多个接口携带tokenconst userStore = useUserStore()const token = userStore.userInfo.tokenif(token){config.headers.Authorization = `Bearer ${token}`    //按后端的要求拼接}return config
},e => Promise.reject(e))

5. 退出登录实现

点击退出登录时,防止误触,弹出一个气泡确认框(el-popconfirm)进行二次确认。

退出登录业务逻辑: 清除用户数据;跳转到登录页

// 组件中,views/XXX.vue
<el-popconfirm @confirm="confirm" title="确认退出吗?" confirm-button-text="确认" cancel-button-text="取消"><template #reference><a href="javascript:;">退出登录</a></template>
</el-popconfirm>
// store中(stores/XXX.js),定义清除用户信息的action
const clearUserInfo = ()=>{userInfo.value = {}
}
return {clearUserInfo
}...// 组件中(views/XXX.vue),实现退出登录业务的逻辑
import { useRouter } from 'vue-router'
const router = useRouter()
const confirm = ()=>{userStore.clearUserInfo()    // 1. 清除用户数据(  -> 调用action进行操作)    router.push('/login')        // 2. 转到登录页
}    

6. token失效(401拦截)

token有效性保持一段时间,如果用户不做任何操作,token会失效,使用失效的token去请求一些接口,接口就会报401状态码错误

 解决:在axios响应拦截器做统一处理

// 401拦截
import router from '@/router'    //js中的路由对象!!// axios响应式拦截器中
httpInstance.interceptors.response.use(res => res.data, e => {const userStore = useUserStore()...// 401失效处理: 1.清除用户数据 2. 跳转if(e.response.status === 401){userStore.clearUserInfo()router.push('/login')}return Promise.reject(e)
})export default httpInstance

参考:Popconfirm 气泡确认框 | Element Plus

ElementUI 教程 - Popconfirm 气泡确认框

一文教你搞定所有前端鉴权与后端鉴权方案,让你不再迷惘 - 掘金 (juejin.cn)

http://www.yayakq.cn/news/754962/

相关文章:

  • 网站建设客户需求调查表沈阳网站公司哪个好
  • 移动端网站怎么做seo网站的三大标签
  • 彩票网站什么做湖南长沙网络公司有哪些
  • 住房城乡建设部执业资格注册中心网站互动网站建设特点
  • 建设ca网站网站页面布局分析
  • 淄博网站制作设计公司ih5制作平台官网免费
  • 开发一个网站模版淘宝联盟建微网站
  • 网站备案icp备案二维码生成器哪个软件好
  • 做短连接的网站广告公司网站设计方案
  • 网站建设公司营业执照什么是网站建设方案书
  • 手机网站是用什么开发的常州模板网站建设咨询
  • 天津做网站美工wordpress获取文章分类
  • 长沙网站建设哪里好外贸品牌网站设计
  • 河南网站建设品牌微信公众号开发需要什么技术
  • 网站建设公司报价asp.net不适合做网站
  • 二维码生成器微信小程序宁波seo咨询
  • 网站行业wordpress+4+chm
  • 学做网站快吗从电子商务网站f型眼球轨迹分析其网站布局
  • 网站域名年龄查询网站网站平台建设方案
  • 创建网站的各项费用建筑人力网
  • 长沙网站设计制作廊坊网站建设技术外包
  • 手机网站建设公司手机网页版登录入口
  • 购买域名后用wordpress建站桂林生活爆料桂林人论坛
  • 兰州网站建设人才招聘蛋糕网站设计
  • 做app的模板下载网站有哪些内容wordpress通知发帖
  • 手机版网站 html5网站建设项目签约仪式举行
  • 大连网站建设过程个人专业制作网站
  • 国内有名的网站设计公司网站开发技术孵化
  • 个人建站软件公司做网站seo的步骤
  • 无锡朝阳网站推广html在线编辑器网页手机