vscode插件
clone 项目
地址:https://github.com/PanJiaChen/vue-admin-template
我们这里不讲vue-element-admin,讲的是vue-admin-template
配置跨域
跨域配置分为两种,一种是cors方式在 vue-config.js 配置 proxy 代理,另外一种是通过 nginx 配置反向代理,这里我们用第一种,第二种 nginx 我还不会
Proxy
proxy: {
'/api' : {
target: process. env. VUE_APP_BASE_API,
changeOrigin: true ,
pathRewrite: {
'^/api' : ''
}
}
}
# just a flag
ENV = 'development'
base api
VUE_APP_BASE_API = ‘/dev-api’
VUE_APP_BASE_API = ‘http://localhost:8080’
npm 启动端口号
port = 9528
vue- cli uses the VUE_CLI_BABEL_TRANSPILE_MODULES environment variable,
to control whether the babel- plugin- dynamic- import - node plugin is enabled.
It only does one thing by converting all import ( ) to require ( ) .
This configuration can significantly increase the speed of hot updates,
when you have a large number of pages.
Detail: https: / / github. com/ vuejs/ vue- cli/ blob/ dev/ packages/ @vue / babel- preset- app/ index. js
VUE_CLI_BABEL_TRANSPILE_MODULES = true
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
跨域配置完了
后端接口
我们这里的后端是java,使用的框架是springboot+springsecurity+jwt+redis
如果你的后台跟我一样,继续往下看,登陆的时候可能会出现一个问题
参考博客: https://blog.csdn.net/qq_42977003/article/details/106016161
前后端分离登陆
因为之前我写请求的时候是直接把请求写在页面里面,请求和响应都是在一起,但是 vue-admin-template 对axios做了封装,例如我们这里的登陆请求是写在store里面的,页面调store的登陆,store调api的登陆请求,同时还有对请求和响应的拦截
request.js
import axios from 'axios'
import { MessageBox, Message } from 'element-ui'
import store from '@/store'
import { getToken } from '@/utils/auth'
const service = axios. create ( {
baseURL: process. env. VUE_APP_BASE_API,
timeout: 5000 } )
service. interceptors. request. use (
config = > {
<span class="token keyword">if</span> <span class="token punctuation">(</span>store<span class="token punctuation">.</span>getters<span class="token punctuation">.</span>token<span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span>
<span class="token comment">// let each request carry token</span>
<span class="token comment">// ['X-Token'] is a custom headers key</span>
<span class="token comment">// please modify it according to the actual situation</span>
<span class="token comment">// config.headers['X-Token'] = getToken()</span>
config<span class="token punctuation">.</span>headers<span class="token punctuation">[</span><span class="token string">'Authorization'</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token string">'Bearer '</span> <span class="token operator">+</span> <span class="token function">getToken</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token punctuation">}</span>
<span class="token keyword">return</span> config
} ,
error = > {
console. log ( error) return Promise. reject ( error) } )
service. interceptors. response. use (
If you want to get http information such as headers or status
Please return response => response
*/
Determine the request status by custom code
Here is just an example
You can also judge the status by HTTP Status Code
*/
response = > { const res = response. data
<span class="token comment">// if the custom code is not 20000, it is judged as an error.</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>res<span class="token punctuation">.</span>code <span class="token operator">!=</span><span class="token operator">=</span> <span class="token number">203</span><span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>res<span class="token punctuation">.</span>code <span class="token operator">==</span><span class="token operator">=</span> <span class="token number">202</span><span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span>
<span class="token function">Message</span><span class="token punctuation">(</span><span class="token punctuation">{<!-- --></span>
message<span class="token operator">:</span> res<span class="token punctuation">.</span>message <span class="token operator">||</span> <span class="token string">'Error'</span><span class="token punctuation">,</span>
type<span class="token operator">:</span> <span class="token string">'error'</span><span class="token punctuation">,</span>
duration<span class="token operator">:</span> <span class="token number">5</span> <span class="token operator">*</span> <span class="token number">1000</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span>
<span class="token punctuation">}</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>res<span class="token punctuation">.</span>code <span class="token operator">==</span><span class="token operator">=</span> <span class="token number">201</span><span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span>
<span class="token function">Message</span><span class="token punctuation">(</span><span class="token punctuation">{<!-- --></span>
message<span class="token operator">:</span> res<span class="token punctuation">.</span>message <span class="token operator">||</span> <span class="token string">'Error'</span><span class="token punctuation">,</span>
type<span class="token operator">:</span> <span class="token string">'error'</span><span class="token punctuation">,</span>
duration<span class="token operator">:</span> <span class="token number">5</span> <span class="token operator">*</span> <span class="token number">1000</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span>
<span class="token punctuation">}</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>res<span class="token punctuation">.</span>code <span class="token operator">==</span><span class="token operator">=</span> <span class="token number">204</span><span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span>
<span class="token function">Message</span><span class="token punctuation">(</span><span class="token punctuation">{<!-- --></span>
message<span class="token operator">:</span> res<span class="token punctuation">.</span>message <span class="token operator">||</span> <span class="token string">'Error'</span><span class="token punctuation">,</span>
type<span class="token operator">:</span> <span class="token string">'error'</span><span class="token punctuation">,</span>
duration<span class="token operator">:</span> <span class="token number">5</span> <span class="token operator">*</span> <span class="token number">1000</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span>
<span class="token punctuation">}</span>
<span class="token comment">// 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>res<span class="token punctuation">.</span>code <span class="token operator">==</span><span class="token operator">=</span> <span class="token number">205</span><span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span>
<span class="token comment">// to re-login</span>
MessageBox<span class="token punctuation">.</span><span class="token function">confirm</span><span class="token punctuation">(</span><span class="token string">'You have been logged out, you can cancel to stay on this page, or log in again'</span><span class="token punctuation">,</span> <span class="token string">'Confirm logout'</span><span class="token punctuation">,</span> <span class="token punctuation">{<!-- --></span>
confirmButtonText<span class="token operator">:</span> <span class="token string">'Re-Login'</span><span class="token punctuation">,</span>
cancelButtonText<span class="token operator">:</span> <span class="token string">'Cancel'</span><span class="token punctuation">,</span>
type<span class="token operator">:</span> <span class="token string">'warning'</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">{<!-- --></span>
store<span class="token punctuation">.</span><span class="token function">dispatch</span><span class="token punctuation">(</span><span class="token string">'user/resetToken'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">{<!-- --></span>
location<span class="token punctuation">.</span><span class="token function">reload</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span>
<span class="token punctuation">}</span>
<span class="token keyword">return</span> Promise<span class="token punctuation">.</span><span class="token function">reject</span><span class="token punctuation">(</span><span class="token keyword">new</span> <span class="token class-name">Error</span><span class="token punctuation">(</span>res<span class="token punctuation">.</span>message <span class="token operator">||</span> <span class="token string">'Error'</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
<span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{<!-- --></span>
<span class="token keyword">return</span> res
<span class="token punctuation">}</span>
} ,
error = > {
console. log ( ‘err’ + error) Message ( {
message: error. message,
type: ‘error’ ,
duration: 5 * 1000 } ) return Promise. reject ( error) } )
export default service
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
api的user.js stored下的mosdules下的user.js view下的login下的index.vue 基本上登陆要的东西都准备好了测试看看
看到这张图,不难发现一套流程虽然执行下来了,但是页面没跳转,又出现10个vue warn,心态炸了,我在网上找原因,没找到,如果有大佬知道怎么回事可以在下面评论区说一下!
前后端分离登陆二
之后用了另外一种方式在这里就要感谢一下知乎的一个作者了
博客地址: https://zhuanlan.zhihu.com/p/36148502
我们修改的是store下的modules下的user.js
import { login } from '@/api/user'
import { getToken, setToken } from '@/utils/auth'
const user = {
state: {
token: getToken ( ) ,
name: ‘’ ,
avatar: ‘’ } ,
mutations: {
SET_TOKEN: ( state, token) = > {
state. token = token} ,
SET_NAME: ( state, name) = > {
state. name = name} ,
SET_AVATAR: ( state, avatar) = > {
state. avatar = avatar} } ,
actions: { Login ( { commit } , userInfo) { return new Promise ( ( resolve, reject) = > { login ( userInfo) . then ( response = > {
console. log ( ‘store’ ) const tokenValue = response. jwtTokensetToken ( tokenValue) commit ( ‘SET_TOKEN’ , tokenValue) resolve ( ) } ) . catch ( error = > { reject ( error) } ) } ) } } }
export default user
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
views下的login下的index.vue请求
handleLogin ( ) {
const _this = this
_this. $refs. loginForm. validate ( valid = > {
if ( valid) {
_this. loading = true
_this. $store
. dispatch ( 'Login' , this . loginForm)
. then ( ( ) = > {
_this. loading = false
console. log ( 'login' )
_this. $router. push ( { path: this . redirect || '/' } )
} )
. catch ( ( msg) = > {
_this. loading = false
} )
} else {
console. log ( 'error submit!!' )
return false
}
} )
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
总结
到这我们就告一段落,希望对您有帮助
<div style="color:#444444;">
适用人群
<p style="color:#666666;">
所有的IT从业者,尤其适合快速掌握新技术,快速增长工作经验人群,对教育公平,教育公益,教育爱心公益人士
</p>
</div>
<p>
</p>
课程概述
<p>
该互联网实战项目是基于 Spring Boot 2<em>+</em> Spring<em>Security</em>5<em>+</em>Element UI<em>+</em><em>Vue</em> <em>Admin</em> <em>Template</em><em>+</em>蚂蚁可视化AntV 等技术栈开发的项目,采用分布式,多模块,前<em>后端</em>分离开发。包括图形展示、权限管理、用户管理等功能。<br />
【后端 技术】<br />
技术 说明<br />
Spring Boot2 MVC框架 开发的一站式解决方案<br />
Spring Security 5 认证和授权框架<br />
MyBatisPlus3.3.1 基于 MyBatis 框架的快速研发框架<br />
MyBatisCode工具 生成 MyBatis 相关代码<br />
Jackson 提供了处理 JSON 数据的工具<br />
Lombok 简化对象封装工具 <br />
Druid 数据库连接池 <br />
【前端技术】<br />Vue 互联网最火的前端框架<br />Vue Router 路由框架<br />Vue x 全局状态管理框架<br />
Axios 前端 HTTP 框架<br />
Element UI 前端 UI 框架<br />Vue Element Admin 前端模板<br />
Antv 蚂蚁金服可视化技术,阿里巴巴可视化技术,天猫,淘宝,支付宝,花呗均使用AntV<br />
【开发工具】<br />
IntelliJ IDEA 开发 IDE<br />
SQLyog 数据库连接客户端<br />
Postman HTTP 请求工具<br />
【开发环境】<br />
工具 版本<br />
JDK 1.8
</p>
<p>
MySQL 5.7
</p>
<p>
<img src=“https://img- bss.csdn.net/202004100922276928.png” alt="" /><img src=“https://img- bss.csdn.net/202004100922434479.png” alt="" /><img src=“https://img- bss.csdn.net/202004100922566924.png” alt="" /><img src=“https://img- bss.csdn.net/202004100923062693.png” alt="" /></p>
<p>
<br /></p>
<p>
<br /></p>
vue - admin - template 与 SpringBoot 前 后端 接口请求数据示例代码; vue - admin - template 与 SpringBoot 前 后端 接口请求数据示例代码
相关推荐
基于 Vue - admin - template + SpringCloud + SpringAlibaba + ...
基于 Vue - admin - template + SpringCloud + SpringAlibaba + Spring Security 搭建的权限框架 系统采用现在最流行的微服务架构,SpringCloud + SpringAlibaba搭建,使用nacos作为注册中心,配置中心, 使用gateway作为网关,采用sentinel作为断路器。OpenFeign服务...
... Vue 的个人博客系统12——使用 vue - admin - template 展...
3、可见 vue - admin - template 给我们提供了一些常见的例子,我们这里只做文章管理部分,下面修改一下路由@/router/index.js import Vue from' vue 'importRouterfrom' vue - router' Vue .use ( Router ) /* Layout */importLayoutfrom'@/layout'export...
一个基于 vue - admin - template 的hexo博客后台管理,项目采用 SpringBoot Vue 开发
主要介绍了 详解 使用 vue - admin - template 的优化历程,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
vue - admin - template 4.0 + 设置baseUrl 使用 springboot ...
vue - admin - template 4.0 + 设置baseUrl 使用 springboot 后端 数据 2020年5月 坑货,折腾了我不少时间,网上全是之前俩版本的设置方法。 第一个版本: 项目内有个 config 包,里面有对应的 dev 和 pro 俩环境的设置方法,里面地址用的...
SpringBoot + Vue 前 后端 分离,使用Spring Security 完美处理...
2.role是角色表,name字段表示角色的英文名称,按照Spring Security 的规范,将以ROLE_开始,nameZh字段表示角色的中文名称。 3.menu表是一个资源表,该表涉及到的字段有点多,由于我的前端采用了 Vue 来做,因此当用户登录成功之后,系统将根据用...
主要介绍了 SpringBoot + Vue 前 后端 分离,使用Spring Security 完美处理权限问题,需要的朋友可以参考下
08-02 3450
2、目录分析
一、目录结构
二、配置信息
vue .config.js
这里面配置了项目的基本信息: 所使用的环境、端口号、对外路径、输入文件路径等信息 , 可以看到我们使用的dev开发环境,下面将查看开发环境的配置
const port = process.env.port || process.env.npm_config_port || 9528 // dev port
// All configuration item explanations can be find i
SpringBoot + Vue 前 后端 分离,使用Spring Security 完美处理...
2.role是角色表,name字段表示角色的英文名称,按照Spring Security 的规范,将以ROLE_开始,nameZh字段表示角色的中文名称。 3.menu表是一个资源表,该表涉及到的字段有点多,由于我的前端采用了 Vue 来做,因此当用户登录成功之后,系统将根据用...
【 Springboot + Vue 】做一个权限管理后台 ( 一 ) :项目介绍...
【 Springboot + Vue 】系列采用了目前比较主流的 后端 框架—— SpringBoot ,前端采用前端三大框架之一的 Vue .js,本系列文章将教大家 入门 Web开发,了解前 后端 分离的结构。本系列文章适合具有一定JavaSE基础与JS基础的胖友 ( 能看懂代码 ) 。我将尽量还原...
12-08 1万+
文章目录 Vue 学习笔记(一)初步印象子模块main.jsApp. vue router总结参考 Vue 学习笔记(一)
学习vue - admin - template
https://github.com/PanJiaChen/vue - admin - template
初步印象
src目录如下
.
├── App.vue
├── api
├── assets
├── components
├── icons
…
vue 管理模板 English | 具有Element UI,axios,iconfont,权限控制和lint的最小 vue 管理员模板 现场演示: : 当前版本是在 vue - cli上构建的v4.0 + 。 如果要使用旧版本,可以将分支切换到 ,它不依赖于 vue - cli 构建设置 # clone the project git clone https://github.com/PanJiaChen/ vue - admin - template .git # enter the project directory cd vue - admin - template # install dependency npm install # develop npm run dev 这将自动打开 建造 # build for test environment npm run build:stage # build for
tp和 vue 管理后台管理系统_Spring Boot + Security + Red...
一个基于 Spring Boot 2.1.0 、 Spring Boot Jpa、 JWT 、Spring Security 、 Redis 、 Vue 的前 后端 分离的后台管理系统,项目采用分模块开发方式, 权限控制采用 RBAC,支持数据字典与数据权限管理,支持一键生成前 后端 代码,支持动态路由!
03-14 3677
忙乎了一天才改好,前端0基础还让我做这个,难顶,记录下备忘吧。 1.修改.env.development
2.修改vue .config.js
3.修改src/utils/request.js
可以修改code状态码,改为自己的,简单点直接全部注释掉,留个return res;即可。
修改main.js
注释掉图中内容,可以全部注释掉不用mock的假数据,但要自己在后台写登录的几个方法,有点麻…
vue - admin - template 前端页面开发框架,你可以把 vue - element - admin 当做工具箱或者集成方案仓库,在 vue - admin - template 的基础上进行二次开发,想要什么功能或者组件就去 vue - element - admin 那里复制过来。在开发后台管理项目时,多用户多角色不同权限的场景可以说是非常普遍的。从零开始手写一个后台,要考虑的东西很多,这里直接拿网上大家比较熟悉的 vue - admin - template 后台模版来进行改造。
vue - admin - template 极简后台模板以及 vue - element - admin 后台集成环境
01-09 8万+
当前 后端 分离时,权限问题的处理也和我们传统的处理方式有一点差异。笔者前几天刚好在负责一个项目的权限管理模块,现在权限管理模块已经做完了,我想通过5 - 6篇文章,来介绍一下项目中遇到的问题以及我的解决方案,希望这个系列能够给小伙伴一些帮助。本系列文章并不是手把手的教程,主要介绍了核心思路并讲解了核心代码,完整的代码小伙伴们可以在GitHub上star并clone下来研究。另外,原本计划把项目跑起来放到网
05-07 1万+
springboot 整合 security 和 vue 文章目录 springboot 整合 security 和 vue 1. security 参考资料2. springboot 整合 security 要点2.1获取登录用户信息2.2自定义登入登出url2.3自定义Handler返回json2.4记住我功能2.5验证码功能2.6限制登录次数2.7密码加密2.8后台提供接口,返回前端json,整合 vue 做前端登入登出3.测...
11-28 4647
遇天坑,就填坑前端: vue - element - admin 的坑 前端: vue - element - admin 的坑 从大神这里下载了https://github.com/PanJiaChen/ vue - admin - template 模板(适合二次开发),第一步:npm install 就遇到了第一个坑。
错误大致就是:XXXXXgit ls- remote - h - t ssh://git@github.com/…
06-14 622
基于 vue - admin - template + SpringBoot + JWT 实现登录 1、实现的具体步骤如下图,可能会有版本差异,但是大致相同如果需要帮助可以联系我扣扣号(3421793724)
2、具体实现代码(有改动)上面图片使用的是固定的,没有和数据库进行连接,实现动态认证。
代码如下(后端 ):
第一步:引入依赖
<dependencies>
<!- - JWT - - >
<dependency>
<groupId>io.jsonw
11-04 1205
vue - admin - template 简介 前 后端 分离开发模式越来越受开发人员的喜爱,开源项目 vue - admin - template 是一个后台前端解决方案,它基于 vue 和 element - ui实现。更多详情请阅读 vue - template - admin 官网, vue - admin - template 项目是其基础模板,本文基于 vue - admin - template 实现与 SpringBoot 的整合 SpringBoot 整合 vue - admin - template
…
04-21 8279
Vue 框架 vue - admin - template 登陆问题解决
valuenet - admin 前端基于 vue - admin - template 模板、 后端 基于 SpringBoot 开发、前 后端 分离 有部分细节还未完善 账号密码( admin \123)
06-10 1485
首先做好准备工作,建好前 后端 项目,配置好。可参考https://segmentfault.com/a/1190000014211773?utm_source=tag - newest
前端:
1.发送登录请求,将后台返回的token保存进sessionStorage。
Login.vue
<template >
<el- row :gutter=“20”>
<el- col :span=“12” :offset=“6”><div cla…
©️2020 CSDN 皮肤主题: 终极编程指南 设计师:CSDN官方博客
返回首页
自&如 CSDN认证博客专家 CSDN认证企业博客
185
原创
17万+
周排名
3万+
总排名
9万+
访问
等级
2768
积分
50
粉丝
76
获赞
22
评论
253
收藏
分类专栏
weixin_43585245: 时隔整整一年,我今天也在干这个了
Lonely丶龙城: 你在实际开发中账号密码写在配置文件里面吗?
ctotalk: 学习
dududuck__: 你好这个问题解决了吗?我现在也遇到了
郑高兴。: