色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

springboot+vue實(shí)現(xiàn)登錄功能

瀏覽:7日期:2022-09-29 11:38:10

本文實(shí)例為大家分享了springboot+vue實(shí)現(xiàn)登錄功能的具體代碼,供大家參考,具體內(nèi)容如下

目錄結(jié)構(gòu)

springboot+vue實(shí)現(xiàn)登錄功能

前端端口:8080后端端口:8900

login.vue

<template> <div class='login_content'><!-- 登錄塊 --><div class='login_box'> <!-- 頭像 --> <div class='avatar_box'><img src='http://m.lshqa.cn/assets/logo.png'/> </div> <!-- 表單區(qū)域 --> <el-form ref='loginFormRef' :rules='loginRules' :model='loginForm' label-width='0'><!-- 用戶名 --><el-form-item prop='username'> <el-input v-model='loginForm.username' prefix-icon='iconfont icon-denglu'></el-input></el-form-item><!-- 密碼 --><el-form-item prop='password'> <el-input v-model='loginForm.password' prefix-icon='iconfont icon-mima' type='password'></el-input></el-form-item><!-- 按鈕 --><el-form-item class='btns'> <el-button type='primary' @click='login'>提交</el-button> <el-button type='info' @click='resetLoginFrom'>重置</el-button></el-form-item> </el-form></div> </div></template><script> export default {data(){ return {// 表單數(shù)據(jù)loginForm:{ username:'admin', password:'123456'},// 驗(yàn)證對(duì)象loginRules:{ // 校驗(yàn)用戶名 username:[{ required: true, message: ’用戶名為必填項(xiàng)’, trigger: ’blur’ },{ min: 5, max: 12, message: ’長(zhǎng)度在 5 到 12 個(gè)字符’, trigger: ’blur’ } ], // 校驗(yàn)密碼 password:[{ required: true, message: ’用戶密碼為必填項(xiàng)’, trigger: ’blur’ },{ min: 6, max: 10, message: ’長(zhǎng)度在 6 - 10 個(gè)字符’, trigger: ’blur’ } ],}, }},methods:{ // 重置表單內(nèi)容 resetLoginFrom(){this.$refs.loginFormRef.resetFields(); }, // 登錄方法 login(){// 1.表單驗(yàn)證this.$refs.loginFormRef.validate(async valid =>{ if(!valid){return ; } // 表單驗(yàn)證成功 const {data:res} = await this.$http.post('login',this.loginForm) // 訪問后臺(tái)地址 console.log(res) if( res.flag == 'ok'){this.$message.success('操作成功');// 跳轉(zhuǎn)到home頁(yè)面this.$router.push({path:'/home'});// 存儲(chǔ)user對(duì)象window.sessionStorage.setItem('user',res.user); }else{this.$message.error('操作失敗') }}); }} }</script><style lang='less' scoped> .login_content{background-color: #2b4b6b;height: 100%; } .login_box{height: 300px;width: 450px;background-color: #fff;border-radius: 3px;position: absolute;left: 50%;top: 50%;transform:translate(-50%,-50%);.avatar_box{ width: 130px; height: 130px; border: 1px solid #eee; border-radius: 50%; padding: 10px; box-shadow: 0 0 10px #ddd; position: absolute; left: 50%; transform:translate(-50%,-50%); background-color: #0ee; img{width: 100%;height: 100%;border-radius: 50%;background-color: #0ee; }} } .btns{display: flex;justify-content: flex-end; } .login_form{position: absolute;buttom:0%;width: 100%;padding: 0 10px;box-sizing: border-box;margin-top: 120px; }</style>

Home.vue

<template> <div><el-button type='info' @click='logout'>安全退出</el-button> </div></template><script> export default {methods:{ logout(){// 清楚sessionwindow.sessionStorage.clear();this.$router.push('/login'); }} }</script><style scoped></style>

index.js

import Vue from ’vue’import VueRouter from ’vue-router’// 引入login組件import Login from ’../components/login.vue’import Home from ’../components/Home.vue’Vue.use(VueRouter)const routes = [ {path:'/',redirect:'/login' }, {path:'/login',component:Login }, {path:'/home',component:Home },]const router = new VueRouter({ routes})// 掛載路由導(dǎo)航守衛(wèi)router.beforeEach((to,from,next)=>{ // to將要訪問 // from 從哪訪問 // next 接著干next(url)重定向url上,繼續(xù)訪問to路徑 if(to.path==’/login’) return next(); // 獲取user const userFlag = window.sessionStorage.getItem('user'); // 無(wú)值返回登錄頁(yè) if(!userFlag) return next(’/login’); // 符合要求,放行 next();})export default router

main.js

import Vue from ’vue’import App from ’./App.vue’import router from ’./router’import ’./plugins/element.js’// 添加全局樣式import ’./assets/css/global.css’// 引入icfontimport ’./assets/font/iconfont.css’// 導(dǎo)入aioxsimport axios from ’axios’// 掛載axiosVue.prototype.$http = axios// 設(shè)置訪問根路徑axios.defaults.baseURL='http://localhost:9000'Vue.config.productionTip = falsenew Vue({ router, render: h => h(App)}).$mount(’#app’)

后臺(tái)實(shí)現(xiàn)

@RestControllerpublic class LoginController { @Autowired UserDao userDao; @PostMapping('login') public String login(@RequestBody User user){String flag = 'fail';User user1 = userDao.getUserByMessage(user.getUsername(),user.getPassword());System.out.println('user'+user1);if(user1!=null){ flag='ok';}Map<String , Object> map = new HashMap<>();map.put('flag',flag);map.put('user',user);String param= JSON.toJSONString(map);return param; }}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 性做久久久久久久免费观看 | 国内精品不卡一区二区三区 | videosfree性欧美另类 | 国产性大片黄在线观看在线放 | 免费在线黄色网址 | 亚洲 欧美 日韩 丝袜 另类 | 午夜性色福利视频在线视频 | 欧美成人高清在线视频大全 | 亚洲成人免费在线 | 天天摸天天爽视频69视频 | 成人毛片免费观看视频 | 欧美色视频日本片高清在线观看 | 99久久久精品免费观看国产 | 亚洲国产高清在线精品一区 | 欧美国产成人精品一区二区三区 | 欧美自拍视频 | 欧美成人精品一区二区 | 97国内免费久久久久久久久久 | 国产高清视频在线播放 | 亚洲bt欧美bt国产bt | 亚洲午夜精品 | 自拍视频精品 | 国产黄色三级三级三级 | 国产精品高清视亚洲精品 | 99久久99热久久精品免费看 | 久久国产一片免费观看 | 国产三级网站 | 国产精品无码久久av | 国产精品_国产精品_国产精品 | 久久久亚洲欧洲日产国码二区 | japanese色系tube护士| 欧美日韩日本国产 | 亚洲精品一二三 | 亚洲国产剧情在线精品视 | 另类专区欧美 | 怡红院美国十次成人影院 | 国产精品无码久久久久 | 亚洲美女自拍视频 | 久久一级毛片 | 美女大片高清特黄a大片 | 福利视频午夜 |