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

中国建设网官方网站appwordpress 附件大小

中国建设网官方网站app,wordpress 附件大小,百度账号找回,深圳高端电商网站建设者目录 1. 分析登录流程 2. Vuex中用户模块的实现 3.Vue-cli代理解决跨域 4.axios封装 5.环境区分 6. 登录联调 7.主页权限验证-鉴权 1. 分析登录流程 传统思路都是登录校验通过之后#xff0c;直接调用接口#xff0c;获取token之后#xff0c;跳转到主页。 vue-elemen…目录 1. 分析登录流程 2. Vuex中用户模块的实现 3.Vue-cli代理解决跨域 4.axios封装 5.环境区分 6. 登录联调 7.主页权限验证-鉴权 1. 分析登录流程 传统思路都是登录校验通过之后直接调用接口获取token之后跳转到主页。 vue-element-admin的登录思路 登录表单校验通过调用Vuex提供的登录的action登录的Action中会调用接口登录接口如果成功执行会返回token利用Vuex的特性将token共享的到Vuex中这样Vuex就统一管理了token,别的地方想要使用直接通过Vuex就可以登录接口会调用单独封装的请求模块(api)请求模块中又会使用用到axios封装的请求工具而请求工具又要考虑区分 开发环境和生产环境的问题请求时还要考虑前后分离项目产生的跨域问题要使用代理解决跨域 2. Vuex中用户模块的实现 登录流程中最核心的是用户模块所以这部分我们单独拿出来进行重写。 代码位置(src/store/modules/user.js) 删除原有模板中用户模块中的内容导出Vuex子模块-声明一个状态token const state {token: null } const mutations {} const actions {} export default {namespaced: true,state,mutations,actions }实现token的Vue数据持久化 import { getToken, setToken, removeToken } from /utils/auth const state {token: getToken(), // 从缓存中读取初始值 } const mutations {setToken(state, token) {state.token token// 同步到缓存setToken(token)},removeToken(state) {// 删除Vuex的tokenstate.token nullremoveToken()} } export default {namespaced: true, // 开启命名空间state,mutations,actions } 实现登录的action方法 const actions {// context上下文传入参数async login(context, data) {console.log(data)// todo: 调用登录接口const token await login(data)// 返回一个token 123456context.commit(setToken, token)}, }在登录组件中调用该action方法-代码位置(src/views/login/index.vue) export default {methods: {login() {this.$refs.form.validate((isOK) {if (isOK) {this.$store.dispatch(user/login, this.loginForm)}})}} }注意 因为user模块导出的时候namespaced为true所以我们调用action的时候要加上模块名称如user/login 3.Vue-cli代理解决跨域 上个小节完成了Vuex用户模块的创建和持久化管理现在已经调通了 **登录页面- action**继续往下需要处理请求模块-axios封装-跨域-区分环境 我们要先把跨域问题解决才能考虑其他内容的开发 首先为什么会有跨域 在后端没有开启cors的情况下浏览器的同源策略会直接限制后端返回的数据给到前端。这是因为我们目前所有的项目都是前后分离前端一个服务 后端一个服务后端不开cors只能前端自己想办法。 代理是怎么解决跨域的 既然前端不能直接请求后端服务那就搞个中间服务中间服务刚好和我们的前端服务同源前端和中间服务可以通信而中间服务是node, node后台向后端发请求是不受同源策略影响的因为同源策略只针对浏览器 这样就是代理中间层的服务将前端的请求代理给了后端接口。 具体怎么做呢 跨域有开发环境跨域和生产环境跨域我们最后上线的时候要考虑生产环境跨域目前只需要考虑开发环境。 配置文件可以直接配置代理 vue.config.js devServer: {port: port,open: true,overlay: {warnings: false,errors: true},proxy: {/api: {target: https://heimahr.itheima.net}}// before: require(./mock/mock-server.js)},注意 要去掉before这个选项这个是mock数据会影响到我们的请求并且修改完成之后要重启服务。 4.axios封装 完成了代理跨域就可以考虑axios的封装了。 axios封装主要封装做哪些呢 基础地址超时时间请求拦截器-统一注入token响应拦截器-解构数据-处理异常 axios的基础功能 代码位置(src/utils/request.js) import axios from axios import store from /store import { Message } from element-ui // 获取axios实例 const service axios.create({/** * process.env node.js 的全局变量 获取环境变量的值* .env.development 文件设置开发环境 npm run dev时默认读取* .env.production 文件设置生产环境 npm run build 时默认读取* 若想在 build 时运行不同的模式来渲染不同的标题你可以通过传递 --mode 选项标志来覆盖命令使用的默认模式* 例如 --mode test 则将读取 .env.test 文件* */// baseURL: process.env.VUE_APP_BASE_API,//基础地址timeout: 10000,//超时时间 })// 基础配置// 请求拦截器成功1 失败2 service.interceptors.request.use((config) {// 注入token// this.$store.getters不是组组件实例// store.getters.token 请求头里面if (store.getters.token) {config.headers.Authorization Bearer ${store.getters.token}}return config }, (error) {// 失败执行promisereturn Promise.reject(error) }) // 响应拦截器 service.interceptors.response.use((response) {const { data, message, success } response.data // 默认json格式if (success) {return data} else {Message({ type: error, message })return Promise.reject(new Error(message))} }, (error) {// error.messageMessage({ type: error, message: error.message })return Promise.reject(error) })export default service 5.环境区分 将.env.development中的值改为 /api 作为请求工具的基础地址**process.env.VUE_APP_BASE_API **的表示读取该变量npm run dev时该变量为 /api, npm run build:prod时 该变量为 /prod-api 6. 登录联调 目前登录功能只剩下红色的部分还需要 首先封装登录的API请求-代码位置(src/api/user.js) import request from /utils/requestexport function login(data) {return request({url: /sys/login,method: post,data}) }Vuex中的用户模块调用登录接口-代码位置(src/store/modules/user.js) const actions {// context上下文传入参数async login(context, data) {console.log(data)// todo: 调用登录接口const token await login(data)// 返回一个token 123456context.commit(setToken, token)} }登录成功后跳转到主页-代码位置(src/views/login/index.vue) methods: {login() {this.$refs.form.validate(async(isOK) {if (isOK) {await this.$store.dispatch(user/login, this.loginForm)// Vuex 中的action 返回的promise// 跳转主页this.$router.push(/)}})}}区分不同环境的数据-代码位置(src/views/login/index.vue) 因为开发环境为了便利我们将用户的账户信息和密码都默认写在了页面上但是真正的项目我们不可能将数据进行暴露出去所以在生产环境时应该将 用户的手机号和密码抹去 export default {name: Login,data() {return {loginForm: {mobile: process.env.NODE_ENV development ? 13800000002 : ,password: process.env.NODE_ENV development ? 123456 : ,isAgree: process.env.NODE_ENV development}}} }7.主页权限验证-鉴权 当前项目用户是否有权限访问主页要考虑当前有没有token, 如果有token, 用户还想去登录页我们可以直接去主页-这个就是免登录功能。有token的情况下直接到主页。 访问主页-有token放过没有token跳到登录页访问登录-有token跳到主页没有token放过 代码实现-代码位置(src/pemission.js) import router from /router import nprogress from nprogress import nprogress/nprogress.css import store from /store/***前置守卫* */const whiteList [/login, /404] router.beforeEach(async(to, from, next) {nprogress.start()if (store.getters.token) {// 存在tokenif (to.path /login) {// 跳转到主页next(/) // 中转到主页// next地址并没有执行后置守卫nprogress.done()} else {next() // 放行}} else {// 没有tokenif (whiteList.includes(to.path)) {next()} else {next(/login) // 中转到登录页nprogress.done()}} })/** ** 后置守卫* **/ router.afterEach(() {nprogress.done() })
http://www.sadfv.cn/news/97866/

相关文章:

  • 怎样在百度上建网站成都网站设计开发做得好
  • 绥化网站建设去哪找做网站的客户
  • 备案个人网站 淘宝客免费微信网站制作平台
  • 网站公司可以做英文网吗seo是什么单位
  • 做网站有软件吗网线制作步骤及方法七个步骤
  • 优秀个人网页设计图片公司的seo是什么意思
  • 北京网站空间域名产品设计专业
  • 湖北网站建设哪里有做视频上什么网站找创意
  • dns 部分网站打不开酥糖的网站建设的目的是什么
  • 响应式网站推广成品app直播源码有什么用
  • 织梦末班和dw建设网站哪个方便优化wordpress安装百度统计
  • wordpress 图像小工具石家庄视频优化公司
  • 山东建设银行招聘网站wordpress 获取页面标题
  • 仪征市城乡建设局网站wordpress插件制作
  • 网站百度seo推广怎么做c 类似wordpress
  • asp网站转手机站钙网logo设计
  • 兰州市城市建设设计院网站莱芜 做网站 公司
  • 旧电脑做php网站服务器怎样做吓人网站
  • 网站制作月薪多少wordpress进不了文章页面
  • 欧美模板网站上海建筑公司排行榜
  • 网站系统怎么做网站排名优化平台
  • 天津网站优化指导重庆网络营销网站建设销售
  • 网站安全证书有问题如何解决wordpress多站点搭建
  • 国外有哪几家做充电桩网站哪个网站可以做任务
  • 优秀英文企业网站学校局域网站建设
  • 重庆网站建设推广公司中文编程软件
  • 四川省建设工程设备安全协会网站工业设计专业是干嘛的
  • 广州越秀网站制作电商平台建站
  • 上海新建设建筑设计有限公司网站二级域名解析网站
  • 成都网站建设 网络公司公司图标设计大全免费