Vue后台开发实例教程(三)登录模块改造,调用服务器接口进行登录
本实例教程是.net core 系列实例开发教程-权限管理系统前端开发教程,使用PanJiaChen写的Vue后台模板。
本文源码下载地址:http://www.80cxy.com/Blog/ResourceView?arId=202403191532545995NAAqJh
系列教程地址:http://www.80cxy.com/Blog/ArticleView?arId=202403191517574161ay3s5V
前端项目调用.net core本地运行的接口项目,由于是两个项目端口号不一致,存在跨域问题,调用接口之前需要解决此问题,解决方法在前端项目配置代理即可。
跨域问题解决后实现前端调用接口代码,然后将登录代码改为调用接口实现,登录逻辑需要调用两个接口,验证用户名密码是否正确接口,以及登录成功后获取用户信息接口,用户信息包含权限信息,权限在最后一节进行介绍。
一、配置代理
修改vue.config.js文件增加代理设置,代码如下:
module.exports = {
/**
* You will need to set publicPath if you plan to deploy your site under a sub path,
* for example GitHub Pages. If you plan to deploy your site to https://foo.github.io/bar/,
* then publicPath should be set to "/bar/".
* In most cases please use '/' !!!
* Detail: https://cli.vuejs.org/config/#publicpath
*/
publicPath: '/',
outputDir: 'dist',
assetsDir: 'static',
lintOnSave: process.env.NODE_ENV === 'development',
productionSourceMap: false,
devServer: {
port: port,
open: true,
overlay: {
warnings: false,
errors: true
},
//配置代理跨域
proxy: {
'/dev-api': {
target: 'https://localhost:7118/',
pathRewrite: { '^/dev-api': '' }
}
}
},
二、接口代码实现
在src/api文件夹下面新建index.js和system.js两个文件,index.js统一对外暴露项目接口,system.js实现具体与系统模块相关的接口代码。代码如下:
import request from '@/utils/request'
//管理用户登录
export function login(data) {
return request({
url: '/api/AdminLogin/AdminLogin',
method: 'post',
data
})
}
//获取用户信息
export function getInfo(token) {
return request({
url: '/api/AdminLogin/GetUserInfo',
method: 'get',
})
}
//退出登录
export function logout() {
return request({
url: '/api/AdminLogin/LogOut',
method: 'post'
})
}
import * as talent from './system.js';
//对外暴露对象
export default{
system,
}
三、登录逻辑修改
修改前端登录代码为调用接口实现登录,修改src/store/modules/user.js登录及获取用户信息代码。代码如下:
//用户登录
async login({ commit }, userInfo) {
const { username, password } = userInfo
let result = await login({ username: username.trim(), password: password })
if (result.code == 200) {
commit('SET_TOKEN', result.data.token)
setToken(result.data.token)
return 'ok'
}
else {
return Promise.reject(new Error('faile'))
}
},
// 获取用户信息
async getInfo({ commit, state }) {
let result = await getInfo(state.token)
if (result.code == 200) {
//返回数据包含:用户名name、用户头像avatar、routes[返回的标志:不同用户应该展示哪些菜单的标记]、roles(用户角色信息)、buttons[按钮的信息:按钮权限用的标记]
const { data } = result
commit('SET_NAME', data.name)
commit('SET_AVATAR', data.avatar)
//执行成功返回data数据
return 'ok'
//return Promise.resolve(result.data)
}
else {
return Promise.reject(new Error('faile'))
}
},
四、实现接口调用携带token
用户登录成功后,在调用后续接口需要携带,token进行权限校验。需要修改request.js文件.代码如下:
// request interceptor
service.interceptors.request.use(
config => {
// do something before request is sent
if (store.getters.token) {
// let each request carry token
//设置请求携带token,服务器端命名为Authorization
config.headers['Authorization'] = 'Bearer ' + getToken()
}
return config
},
error => {
// do something with request error
console.log(error) // for debug
return Promise.reject(error)
}
)
学习交流

猜您可能还喜欢
- CERT_HAS_EXPIRED错误如何解决(3022)
- Js异步async、await关键字详细介绍(lambda表达式中使用async和await关键字)(2667)
- Vue 2.x + Element后台模板开发教程(三)后台首页模板设计(1314)
- vuex中 this.$store.dispatch() 与 this.$store.commit()方法的区别(1289)
- Error: Cannot find module ‘chokidar‘ 解决方法(1280)
- Vue后台开发实例教程(二)Title修改及左侧菜单修改(1196)
- Vue 2.x + Element后台模板开发教程(一)(1143)
- vuejs中如何使用axios调用后台接口(1135)
- vue.js初探(一)vue.js全家桶介绍(941)
- vue.js初探(三)vue页面结构(941)
评论列表
发表评论
文章分类
文章归档
- 2025年3月 (1)
- 2024年6月 (2)
- 2024年5月 (2)
- 2024年4月 (4)
- 2024年3月 (30)
- 2024年1月 (4)
- 2023年12月 (2)
- 2023年11月 (4)
- 2023年10月 (4)
- 2023年9月 (6)
- 2023年3月 (2)
- 2023年2月 (1)
- 2023年1月 (1)
- 2022年12月 (1)
- 2022年9月 (21)
- 2022年8月 (10)
- 2022年7月 (3)
- 2022年4月 (1)
- 2022年3月 (13)
- 2021年8月 (1)
- 2021年3月 (1)
- 2020年12月 (42)
- 2020年11月 (7)
- 2020年10月 (5)
- 2020年8月 (1)
- 2020年6月 (1)
- 2020年3月 (2)
- 2019年12月 (8)
- 2019年11月 (3)
- 2019年9月 (1)
- 2019年4月 (1)
- 2019年3月 (6)
- 2019年2月 (1)
- 2018年7月 (7)
阅读排行
- 1.asp.net mvc内微信pc端、H5、JsApi支付方式总结(5920)
- 2.Windows 10休眠文件更改存储位置(4013)
- 3.各大搜索网站网站收录提交入口地址(3506)
- 4.windows 10安装myeclipse 10破解补丁cracker.jar、run.bat闪退解决办法(3482)
- 5.ECharts仪表盘实例及参数使用详解(3465)
- 6.华为鸿蒙系统清除微信浏览器缓存方法(3258)
- 7.HTML5 WebSocket与C#建立Socket连接实现代码(3222)
- 8.CERT_HAS_EXPIRED错误如何解决(3022)
- 9.Js异步async、await关键字详细介绍(lambda表达式中使用async和await关键字)(2667)
- 10.HBuilder编辑器格式化代码(2430)
