最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2021年05月26日 16:41:59   作者:max_yuyu  
這篇文章主要為大家詳細(xì)介紹了springboot+vue實(shí)現(xiàn)登錄功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

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

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

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

login.vue

<template>
    <div class="login_content">
        <!--  登錄塊  -->
        <div class="login_box">
            <!-- 頭像  -->
            <div class="avatar_box">
                <img src="../assets/logo.png"/>
            </div>
            <!-- 表單區(qū)域 -->
            <el-form ref="loginFormRef" :rules="loginRules"  :model="loginForm" class="login_form" label-width="0">
                <!-- 用戶(hù)名 -->
                <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)用戶(hù)名
                    username:[
                        { required: true, message: '用戶(hù)名為必填項(xiàng)', trigger: 'blur' },
                        { min: 5, max: 12, message: '長(zhǎng)度在 5 到 12 個(gè)字符', trigger: 'blur' }
                    ],
                    // 校驗(yàn)密碼
                    password:[
                        { required: true, message: '用戶(hù)密碼為必填項(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) // 訪問(wèn)后臺(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(){
                // 清楚session
                window.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將要訪問(wèn)
    // from 從哪訪問(wèn)
    // next 接著干next(url)重定向url上,繼續(xù)訪問(wèn)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'
// 引入icfont
import './assets/font/iconfont.css'

// 導(dǎo)入aioxs
import axios from 'axios'
// 掛載axios
Vue.prototype.$http = axios
// 設(shè)置訪問(wèn)根路徑
axios.defaults.baseURL="http://localhost:9000"


Vue.config.productionTip = false

new Vue({
  router,
  render: h => h(App)
}).$mount('#app')

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

@RestController
public 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í)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解如何繼承Mybatis中Mapper.xml文件

    詳解如何繼承Mybatis中Mapper.xml文件

    這篇文章主要為大家介紹了詳解如何繼承Mybatis中Mapper.xml文件,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • 詳解Spring如何注入靜態(tài)變量

    詳解Spring如何注入靜態(tài)變量

    這篇文章主要為大家詳細(xì)介紹了Spring是如何注入靜態(tài)變量的,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解一下
    2023-06-06
  • Java編程long數(shù)據(jù)類(lèi)型的使用問(wèn)題

    Java編程long數(shù)據(jù)類(lèi)型的使用問(wèn)題

    這篇文章主要介紹了Java編程數(shù)據(jù)類(lèi)型long的使用問(wèn)題,涉及長(zhǎng)整型數(shù)據(jù)的取值范圍和不同整數(shù)類(lèi)型的表示方法,需要的朋友可以參考下
    2017-09-09
  • java Array和Arrays的區(qū)別總結(jié)

    java Array和Arrays的區(qū)別總結(jié)

    在本篇內(nèi)容里小編給大家整理的是一篇關(guān)于java Array和Arrays的區(qū)別總結(jié)內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。
    2021-03-03
  • 使用JavaSE來(lái)模擬斗地主

    使用JavaSE來(lái)模擬斗地主

    這篇文章主要介紹了使用JavaSE來(lái)模擬斗地主,對(duì)棋牌游戲有研究的同學(xué)可以參考一下
    2021-04-04
  • 關(guān)于LocalDateTime使用詳解

    關(guān)于LocalDateTime使用詳解

    這篇文章主要介紹了關(guān)于LocalDateTime使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • IDEA main主函數(shù)如何添加args變量

    IDEA main主函數(shù)如何添加args變量

    這篇文章主要介紹了IDEA main主函數(shù)如何添加args變量,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-12-12
  • 在 Spring Boot 項(xiàng)目中實(shí)現(xiàn)文件下載功能

    在 Spring Boot 項(xiàng)目中實(shí)現(xiàn)文件下載功能

    這篇文章主要介紹了在 Spring Boot 項(xiàng)目中實(shí)現(xiàn)文件下載功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Java實(shí)現(xiàn)入?yún)?shù)據(jù)批量數(shù)據(jù)校驗(yàn)詳解

    Java實(shí)現(xiàn)入?yún)?shù)據(jù)批量數(shù)據(jù)校驗(yàn)詳解

    在業(yè)務(wù)處理中一般入?yún)⑹菃螚l數(shù)據(jù),這樣數(shù)據(jù)校驗(yàn)比較容易,但是這種方法對(duì)于集合數(shù)據(jù)的校驗(yàn)不適用,下面我們就來(lái)看看如何對(duì)入?yún)?shù)據(jù)進(jìn)行批量數(shù)據(jù)校驗(yàn)吧
    2024-02-02
  • java開(kāi)發(fā)WMS倉(cāng)庫(kù)商品預(yù)警需求示例解析

    java開(kāi)發(fā)WMS倉(cāng)庫(kù)商品預(yù)警需求示例解析

    這篇文章主要為大家介紹了java開(kāi)發(fā)WMS倉(cāng)庫(kù)商品預(yù)警需求示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04

最新評(píng)論

辽阳县| 扎鲁特旗| 灵宝市| 伊春市| 澳门| 禹城市| 通江县| 安阳市| 滦南县| 永吉县| 凤翔县| 禹城市| 清丰县| 伊宁市| 龙口市| 渭南市| 米泉市| 文化| 福清市| 囊谦县| 拜泉县| 平度市| 石首市| 张掖市| 英吉沙县| 万宁市| 施甸县| 石泉县| 沙河市| 平乡县| 靖州| 马公市| 高邑县| 永和县| 开鲁县| 张家口市| 巩留县| 金沙县| 高青县| 永登县| 美姑县|