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

中国建设部网站四库平台欧美 手机网站模板下载 迅雷下载 迅雷下载地址

中国建设部网站四库平台,欧美 手机网站模板下载 迅雷下载 迅雷下载地址,网站开发公司会计处理,网站研发进度表下载若依官方的前后端分离版中#xff0c;前端用的Vue2#xff0c;这个有人改了Vue3的前端出来。刚好用来学习#xff1a; https://gitee.com/weifengze/RuoYi-Vue3 运行前后端项目 首先运行项目 启动前端#xff0c;npm install、npm run dev 启动后端#xff0c;按教程配置…若依官方的前后端分离版中前端用的Vue2这个有人改了Vue3的前端出来。刚好用来学习 https://gitee.com/weifengze/RuoYi-Vue3 运行前后端项目 首先运行项目 启动前端npm install、npm run dev 启动后端按教程配置数据库、redis环境启动即可 页面实现文件在RUOYI-VUE3/src/views/login.vue 验证码 function getCode() {getCodeImg().then(res {captchaEnabled.value res.captchaEnabled undefined ? true : res.captchaEnabled;if (captchaEnabled.value) {codeUrl.value data:image/gif;base64, res.img; //后端传来的验证码图片地址loginForm.value.uuid res.uuid;}}); } //页面初始化, 获取验证码 getCode();getCodeImg()方法封装在 RUOYI-VUE3/src/api/login.js // 获取验证码 export function getCodeImg() {return request({url: /captchaImage,headers: {isToken: false},method: get,timeout: 20000}) }前端Vue和后端Springboot交互时通常使用axiosajax。 发现getCodeImg()方法内还有一个 request()的封装在RUOYI-VUE3/src/utils/request.js axios.defaults.headers[Content-Type] application/json;charsetutf-8 // 创建axios实例 const service axios.create({// axios中请求配置有baseURL选项表示请求URL公共部分baseURL: import.meta.env.VITE_APP_BASE_API,// 超时timeout: 10000 })这个VITE_APP_BASE_API 常量根据不同的运行情况在这些文件里面 例如现在运行的是dev环境。就在.env.development中 前端发生的请求url为http://localhost/dev-api/captchaImage 就是request.js这里封装了一个baseURL 然后getCodeImg()方法里写了/captchaImage接口地址。 反向代理 后端运行在localhost:8080端口上前端运行在localhost:80端口上。 浏览器访问的是前端项目如果要调用后端接口会跨域。 跨域问题可以由后端解决写一个允许跨域的配置类 跨域问题也可以由前端解决反向代理。 反向代理的配置在RUOYI-VUE3/vite.config.js中 // vite 相关配置server: {port: 80,host: true,open: true,proxy: {// https://cn.vitejs.dev/config/#server-proxy/dev-api: {target: http://localhost:8080,changeOrigin: true,rewrite: (p) p.replace(/^\/dev-api/, )}}},代码解释 /dev-api 是代理的前缀路径表示所有以 ‘/dev-api’ 开头的请求都会被代理。 target: http://localhost:8080 指定了代理的目标地址即真实的后端服务地址。 changeOrigin: true 通常是设置为 true以便确保请求头中的 Host 字段保持一致防止一些反向代理的问题。 rewrite: (p) p.replace(/^\/dev-api/, ) 用于重写请求路径它将路径中的 ‘/dev-api’ 前缀去掉以适应后端的实际路径。 这样配置之后当你在前端代码中发起类似于 ‘/dev-api/captchaImage’ 的请求时 Vite 将把这个请求代理到 ‘http://localhost:8080/captchaImage’。 登录 和验证码一样的流程登录功能主要由handleLogin()方法实现 userStrore 在RUOYI-VUE3/src/store/module/user.js 是Vuex的用法 Vuex 集中式状态管理 当应用变得复杂时组件之间共享状态可能变得困难。Vuex 提供了一个集中式的状态管理机制使状态的变化可预测且容易调试。 全局访问 通过 Vuex可以在任何组件中访问相同的状态。这样你就可以在组件之间共享数据而不需要通过繁琐的组件通信来传递数据。 状态持久化 Vuex 允许你将状态持久化到本地存储以便在页面刷新或重新加载时仍然保留应用的状态。 userStrore const useUserStore defineStore(user,{state: () ({token: getToken(),name: ,avatar: ,roles: [],permissions: []}),actions: {login(userInfo) {// ...},getInfo() {// ...},logOut() {// ...}}} ) export default useUserStore defineStore 是 Vuex 4 中新引入的函数用于创建 store 模块。 user是模块的名称。 state 中定义了用户模块的初始状态包括 token、name、avatar、roles 和 permissions 等初始状态信息。 action中定义登录相关的 actions 最后导出useUserStore以便在应用的其他地方可以引入并使用这个 store 模块。 外层login(userInfo) 方法. 根据传入的用户信息构建并返回一个Promise它是es6提供的异步处理的对象 里面的login(username, password, code, uuid) 和前面的getCodeImg()方法一样在RUOYI-VUE3/src/api/login.js中封装的一个request最终还是ajax login(userInfo) {const username userInfo.username.trim()const password userInfo.passwordconst code userInfo.codeconst uuid userInfo.uuidreturn new Promise((resolve, reject) {login(username, password, code, uuid).then(res {setToken(res.token)this.token res.tokenresolve()}).catch(error {reject(error)})})},登录成功后后端返回的结果中有一个Token. import Cookies from js-cookieconst TokenKey Admin-Tokenexport function getToken() {return Cookies.get(TokenKey) }export function setToken(token) {return Cookies.set(TokenKey, token) }export function removeToken() {return Cookies.remove(TokenKey) }setToken(res.token) 就是把这个后端返回的Token放到Cookies中。 Vue Router //使用 Vue Router 中的 useRouter 函数创建了一个 router 对象。 const router useRouter()常见用法就是 // 字符串 router.push(home) // 命名的路由 router.push({ name: user, params: { userId: 123 }}) //对象 router.push({ path: redirect.value || / });router的 push方法和replace方法的详细用法https://blog.csdn.net/sunhuaqiang1/article/details/85220888 点击登录后后端业务会去验证验证码、账号、密码。正确就登录成功。后端登录方法中还会调用recordLoginInfo()方法记录登录信息写入日志。 获取用户角色和权限 通过浏览器的请求可以发现登录成功后还会调用getInfo 和getRouters 它们是在RUOYI-VUE3/src/permission.js中被调用的 beforeEach 是 Vue Router 提供的全局前置守卫函数前端每个页面进行跳转前都会执行这个函数。 router.beforeEach((to, from, next) {NProgress.start()if (getToken()) {to.meta.title useSettingsStore().setTitle(to.meta.title)/* 如果即将进入的路由是 /login则直接重定向到根路径 /表示已经登录的情况下不允许再访问登录页面。*/if (to.path /login) {next({ path: / })NProgress.done()} else {//如果角色信息未获取则去请求user_info和路由表if (useUserStore().roles.length 0) {isRelogin.show true// 判断当前用户是否已拉取完user_info信息useUserStore().getInfo().then(() {isRelogin.show falseusePermissionStore().generateRoutes().then(accessRoutes {// 根据roles权限生成可访问的路由表accessRoutes.forEach(route {if (!isHttp(route.path)) {router.addRoute(route) // 动态添加可访问路由表}})next({ ...to, replace: true }) // hack方法 确保addRoutes已完成})}).catch(err {useUserStore().logOut().then(() {ElMessage.error(err)next({ path: / })})})} else {next()}}} else {// 没有tokenif (whiteList.indexOf(to.path) ! -1) {// 在免登录白名单直接进入next()} else {next(/login?redirect${to.fullPath}) // 否则全部重定向到登录页NProgress.done()}} })router.afterEach(() {NProgress.done() }) 具体的动态路由和角色权限管理且听下回分解
http://www.hkea.cn/news/14575820/

相关文章:

  • 广州网站建设推广报价wordpress插件版本回退
  • 中山建设网站公司百度公司电话是多少
  • 帝国网站后台认证码错误建设厅公积金中心网站
  • 哪个网站可以找设计师做设计长腿蜘蛛wordpress
  • 哈尔滨站建好了吗微信管理系统在哪里找
  • 做视频网站都需要什么软件下载网站参数
  • 工信部网站备案规定做外贸推广的网站
  • 做网站选哪家公司城乡建设部统计网站
  • 免费网站制作推广南京网站制作哪家专业
  • 聊城网站公司企业网站制作哪家好
  • 宣汉网站建设单位网站建设维护论文
  • 不忘初心网站建设定边网站建设
  • 外网视频网站做泥声控手机钓鱼网站免费制作
  • 手机端网站设计模板我的企业邮箱在哪里看
  • 湖北中英双语网站建设做网站要用什么服务器吗
  • 网站怎么seo关键词排名优化推广乐陵市住房和城乡建设局网站
  • e4a做网站软件成都网站seo分析
  • 介绍一学一做视频网站网站建设开发详细步骤流程图
  • 中昌国际建设集团网站哪家app软件开发公司好
  • 网站如何做首面关键词企业信用信息公示系统网址年检
  • 老鹰网站建设wordpress 4.4.7
  • 网站建设宣传预算网站建设上海
  • 做网站需要填什么武义县网站建设公司
  • 网站集约化建设工作打算wordpress邮箱模板
  • 做游戏直播那个网站济南网站建设服务公司
  • 安徽元鼎建设工程网站甘肃省建设厅官方网站质监局
  • 简单的手机网站模板推广营销手段有哪些
  • 知名网站网站正能量点进去就能看
  • 自建手机网站wordpress主题企业
  • 免费的素材网站有哪些黑龙江建设局官网