vue+element后台管理系统登录

登录页面表单验证

验证方法element上有介绍

	//在el-form里加上
:rules="rules" ref="ruleForm"

	//在el-form-item里定义prop    
prop="name"

	//1、在data return里定义rules
data{
	return {
		rules:{
			name: [
            { required: true, message: '请输入活动名称', trigger: 'blur' },
            { min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }
          ],
		}
	}
}

	//2、在el-form-item 直接定义
	:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"

//提交时的验证  要把form传过来
 this.$refs[form].validate((valid) => {
          if (valid) {
}else{
return false;
}

用axios请求登录

//先下载axios
	cnpm i axios -s
//在main.js里引入
	import axios from "axios";
	Vue.prototype.axios =  axios 
// 统一配置请求地址
	let baseURL = ""
	axios.defaults.baseURL = baseURL

发送axios验证

//在登录页面发送请求(跟表单验证相结合)
	login(form){
		//先清除之前的缓存
      	localStorage.clear();
      	//表单验证  通过发送请求 否则不发送请求
		this.$refs[form].validate((valid) => {
	          if (valid) {
	          	 //发送请求前清空之前全局配置的请求头信息
       			 this.axios.interceptors.request.use(function (config) {
          			if(1){
            			config.headers['Authorization'] = '';
          			}
          			return config;
       				}, function (error) {
         		 		return Promise.reject(error);
        	 	  })
        		//开始配置相关信息准备发送请求
        		var api='';
        		var data={}
		        //发送请求 注意:如果数据格式为formdata格式需要引入Qs对数据进行转换
		        this.axios.post(api,Qs.stringify(data),{headers:{
		          'Content-Type':'application/x-www-form-urlencoded'
		        }}).then((response)=>{
		              // 如果成功要跳转至首页, 将token保存到localStorage 如果失败显示账号密码错误不进行跳转
		              if (response.data.data.tokenId !== '') {
		                **localStorage.setItem('tokenId',response.data.data.tokenId);**
		                if(response.data.data.classify == "01"){
		                  window.location.href = response.data.data.iscUrl;
		                }else{
		                  // 请求动态路由接口获取动态导航内容
		                  var api='';
		                  this.axios.get(api).then((response)=>{
		                    var data = response.data.data;
		                    this.menusList=data;
		                    window.sessionStorage.setItem('user',JSON.stringify(data));
		                    MenuUtils(this.$router.options.routes[1].children,data);
		                    // this.$router不是响应式的,所以手动将路由元注入路由对象
		                    // this.$router.options.routes.push(routers);
		                    this.$router.addRoutes(this.$router.options.routes);
		                    this.$router.push({path: '/home'})
		                  }).catch((error)=>{
		                    console.log(error);
		                    this.fullscreenLoading = false;
		                    this.$message.error('获取菜单信息失败!');
		                  })
		                }
		            } else {
		              this.show2=true;
		              this.fullscreenLoading = false;
		              this.$message.error('登录失败!');
		            }
		        }).catch((error)=>{
		          this.show2=true;
		          console.log(error);
		        })
	          } else {
	            return false;
	          }
	     });
	 }
注意:除登录窗口 其他请求都必须设置Authorization = token 保证是在登录且不过期的状态下请求的(token是登录后服务器返回的认证)
用***axios拦截器 ***拦截请求,只要发送请求就会触发这个方法
//在登录时会将token存在本地  在main.js里将token取出来
axios.interceptors.request.use(config=>{
  let token = localStorage.getItem('tokenId')
  if(token){
    config.headers['Authorization'] = token
  }
  return config
})
路由全局守卫

axios只是拦截请求 路由是不登陆看不到页面

router.beforeEach((to,from,next)=>{
  let token = localStorage.getItem('tokenId')
  //判断token是否存在  若登录 下一步
  if(token){
    next()
  }else{
  //没登陆 判断 是否是login是的话就下一步 不是就跳转至login 实现路由拦截
    if(to.path=='/login'){
      next()
    }else{
      next('/login')
    }
  }
})

导航菜单加载路由

在element导航菜单中 想要开启路由功能 需要将el-menu中的router值设为true 同时菜单项中的index作为path
router和index都需要动态绑定:

//在el-menu里添加
:router="true"
//在菜单项中将index开启路由功能
  //问路
:index=" '/home/'+path "
  //在router.js的home里添加嵌套路由
  {
  	path:'/home/',
  	nam:'/home',
  	component:home,
  	children:[
  		{path:'/路径',component:名字,}
  	]
  }
  //在相对应的地方添加占位符
  <router-view></router-view>
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue Element 后台管理源码是一个基于Vue.js和Element UI的快速开发平台,用于构建现代化的响应式管理系统。它提供了丰富的组件和解决方案,帮助开发者快速搭建高质量的后台管理界面。 该源码具有以下主要特点: 1. 响应式布局:根据屏幕尺寸自动调整布局,使得后台管理系统在不同设备上都能够适应。 2. 多功能组件:提供了丰富的Element UI组件,包括表格、表单、图表、对话框等,能够满足各种常见的后台管理功能需求。 3. 可扩展性:源码采用模块化开发,提供了清晰的目录结构和组件划分,开发者可以根据自己的需求进行定制和扩展。 4. 路由管理:源码使用Vue Router进行路由管理,支持动态路由和嵌套路由,可以方便地实现导航菜单和页面的跳转。 5. 权限控制:提供了基于角色的权限控制功能,开发者可以根据用户角色进行页面和功能的权限管理。 6. 数据交互:通过封装axios库,实现了与后端接口的数据交互,并提供了统一的请求拦截和响应处理机制。 7. 国际化支持:支持多语言切换,可以根据用户的语言设置显示不同的界面内容。 总之,Vue Element 后台管理源码是一个功能强大、易于使用和扩展的开发工具,适用于构建中大型的后台管理系统。开发者可以基于这个源码快速搭建出具有良好用户体验的后台管理界面。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值