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

使用springboot結合vue實現(xiàn)sso單點登錄

 更新時間:2021年05月26日 16:33:23   作者:西城xml  
這篇文章主要為大家詳細介紹了如何使用springboot+vue實現(xiàn)sso單點登錄,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了springboot vue實現(xiàn)sso單點登錄的具體代碼,供大家參考,具體內容如下

項目結構:

開發(fā)工具:idea, maven3
靜態(tài)文件下載地址

1.pom文件:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <parent>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-parent</artifactId>
 <version>2.1.2.RELEASE</version>
 <relativePath/> <!-- lookup parent from repository -->
 </parent>
 <groupId>com.xicheng</groupId>
 <artifactId>ssodemo</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <name>ssodemo</name>
 <description>Demo project for Spring Boot</description>
 <properties>
 <java.version>1.8</java.version>
 </properties>
 <dependencies>
 <dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
 </dependency>
 <dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-thymeleaf</artifactId>
 </dependency>
 <dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-test</artifactId>
  <scope>test</scope>
 </dependency>
 </dependencies>
 <build>
 <plugins>
  <plugin>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-maven-plugin</artifactId>
  </plugin>
 </plugins>
 </build>
</project>

2.MVC頁面跳轉配置類,如果請求直接跳轉頁面,采用該配置可以減少controller中代碼的編寫

package com.xicheng.ssodemo.common;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * @author xichengxml
 * @date 2019/2/13 16:56
 */
@Configuration
public class SpringMvcConfig implements WebMvcConfigurer {

  @Override
  public void addViewControllers(ViewControllerRegistry registry) {
    registry.addViewController("login").setViewName("login");
    registry.addViewController("success").setViewName("success");
    registry.addViewController("error").setViewName("error");
  }
}

3.核心校驗類編寫

package com.xicheng.ssodemo.common;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;

/**
 * @author xichengxml
 * @date 2019/2/13 16:19
 * 登錄校驗工具類
 */
public class LoginCheck {

  /** 用戶名 */
  private static final String USERNAME = "uname";
  /** 密碼 */
  private static final String PASSWORD = "pwd";
  /** cookie鍵 */
  public static final String COOKIE_KEY = "sso";
  /** cookie值 */
  public static final String COOKIE_VAL = "ssocookie";

  /**
   * 校驗用戶名和密碼
   * @param userName 登錄用戶名
   * @param password 登錄密碼
   * @return 成功返回true; 失敗返回false
   */
  public static boolean checkLogin(String userName, String password) {
    return USERNAME.equals(userName) && PASSWORD.equals(password);
  }

  /**
   * 校驗cookie
   * @param request
   * @return
   */
  public static boolean checkCookie(HttpServletRequest request) {
    Cookie[] cookies = request.getCookies();
    if (cookies != null && cookies.length != 0) {
      for (Cookie cookie : cookies) {
        if (COOKIE_KEY.equals(cookie.getName()) && COOKIE_VAL.equals(cookie.getValue())) {
          return true;
        }
      }
    }
    return false;
  }
}

4.核心登錄controller編寫

package com.xicheng.ssodemo.controller;

import com.xicheng.ssodemo.common.LoginCheck;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse;

/**
 * @author xichengxml
 * @date 2019/2/13 16:31
 */
@Controller
public class LoginController {

  /**
   * 登錄成功后保存cookie在域下,返回登錄成功頁
   * @param uname
   * @param pwd
   * @param response
   * @return
   */
  @RequestMapping("/do-login")
  public String doLogin(String uname, String pwd, HttpServletResponse response) {
    if (LoginCheck.checkLogin(uname, pwd)) {
      Cookie cookie = new Cookie(LoginCheck.COOKIE_KEY, LoginCheck.COOKIE_VAL);
      cookie.setPath("/");
      response.addCookie(cookie);
      return "success";
    }
    return "error";
  }

}

5.登錄controller編寫

package com.xicheng.ssodemo.controller;

import com.xicheng.ssodemo.common.LoginCheck;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;

/**
 * @author xichengxml
 * @date 2019/2/13 17:53
 */
@Controller
public class SameOriginController {

  /**
   * cookie存在,登錄成功;否則返回登錄頁
   * @param request
   * @return
   */
  @RequestMapping("/login01")
  public String demo01(HttpServletRequest request) {
    return LoginCheck.checkCookie(request) ? "success" : "login";
  }

  @RequestMapping("/login02")
  public String demo02(HttpServletRequest request) {
    return LoginCheck.checkCookie(request) ? "success" : "login";
  }

}

6.登錄頁面及成功失敗頁面編寫

<!-- login.html -->
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>登錄</title>
  <script src="/js/vue.js" type="text/javascript"></script>
  <script src="/js/element.js" type="text/javascript"></script>
  <script src="/js/axios.min.js" type="text/javascript"></script>
  <link href="/css/element.css" rel="external nofollow" rel="stylesheet" type="text/css"/>
</head>
<body>
  <div id="app">
    <el-input v-model="uname" placeholder="請輸入用戶名"></el-input>
    <el-input v-model="pwd" placeholder="請輸入密碼"></el-input>
    <el-button @click="submit" type="primary">登錄</el-button>
  </div>

  <script>
    new Vue({
      el: "#app",
      data: {
        uname: '',
        pwd: ''
      },
      methods: {
        submit: function () {
          // 獲取用戶名和密碼
          var uname = this.uname;
          var pwd = this.pwd;
          // 發(fā)送http請求
          axios.get("do-login", {params: {uname: uname, pwd: pwd}})
            .then(function (response) {
              if(response.status == 200) {
                location.href = "/success";
              } else {
                location.href = "/error";
              }
            })
            .catch(function (error) {
              alert("error--" + error);
            })
        }
      }
    });
  </script>
</body>
</html>
<!-- success.html -->
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>成功頁面</title>
</head>
<body>
  This is success page!
</body>
</html>
<!-- error.html -->
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>錯誤頁面</title>
</head>
<body>
  This is error page!
</body>
</html>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 通過Docker啟動Solace并在Spring?Boot通過JMS整合Solace的操作方法

    通過Docker啟動Solace并在Spring?Boot通過JMS整合Solace的操作方法

    本文將介紹如何在Spring中使用,雖然代碼使用的是Spring Boot,但并沒有使用相關starter,跟Spring的整合一樣,可通用,JMS是通過的消息處理框架,可以深入學習一下,不同的MQ在JMS的整合上都是類似的,感興趣的朋友跟隨小編一起看看吧
    2023-01-01
  • Java實現(xiàn)最小生成樹算法詳解

    Java實現(xiàn)最小生成樹算法詳解

    這篇文章主要介紹了如何在Java中實現(xiàn)最小生成樹算法,文中的示例代碼講解詳細,對我們學習Java有一定幫助,需要的可以參考一下
    2022-04-04
  • JavaWeb?Servlet技術及其應用實踐

    JavaWeb?Servlet技術及其應用實踐

    這篇文章主要介紹了JavaWeb?Servlet技術,Servlet指在服務器端執(zhí)行的一段Java代碼,可以接收用戶的請求和返回給用戶響應結果,感興趣想要詳細了解可以參考下文
    2023-05-05
  • Springboot整合Jedis實現(xiàn)單機版或哨兵版可切換配置方法

    Springboot整合Jedis實現(xiàn)單機版或哨兵版可切換配置方法

    這篇文章主要介紹了Springboot整合Jedis實現(xiàn)單機版或哨兵版可切換配置方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-11-11
  • springboot 打包部署 共享依賴包(分布式開發(fā)集中式部署微服務)

    springboot 打包部署 共享依賴包(分布式開發(fā)集中式部署微服務)

    這篇文章主要介紹了springboot 打包部署 共享依賴包(分布式開發(fā)集中式部署微服務)的相關資料,非常不錯,具有參考借鑒價值,需要的的朋友參考下吧
    2017-06-06
  • SpringBoot通過tractId操作日志鏈路跟蹤

    SpringBoot通過tractId操作日志鏈路跟蹤

    這篇文章給大家介紹SpringBoot通過tractId操作日志鏈路跟蹤,通過tractId,即可完成對從一個請求進入系統(tǒng)到請求結束的日志追蹤,本文給大家介紹的非常詳細,需要的朋友參考下吧
    2023-10-10
  • java逗號分隔String字符串及數組、集合相互轉換

    java逗號分隔String字符串及數組、集合相互轉換

    我們在日常開發(fā)時會經常遇到將一個字符串按照逗號進行分割,這篇文章主要給大家介紹了關于java逗號分隔String字符串及數組、集合相互轉換的相關資料,文中給出了詳細的代碼示例,需要的朋友可以參考下
    2024-02-02
  • Java中double精度丟失問題原因及解決辦法

    Java中double精度丟失問題原因及解決辦法

    使用Java double進行運算時,經常出現(xiàn)精度丟失的問題,總是在一個正確的結果左右偏0.0000**1,這篇文章主要給大家介紹了關于Java中double精度丟失問題原因及解決辦法,需要的朋友可以參考下
    2024-01-01
  • jmeter中json提取器如何提取多個參數值

    jmeter中json提取器如何提取多個參數值

    關于jmeter中的正則表達式及json提取器可以提取響應值,但是實際可以需要上個接口的多個響應值,本文就詳細的介紹一下如何使用,感興趣的可以了解一下
    2021-11-11
  • MyBatis批量插入大量數據(1w以上)

    MyBatis批量插入大量數據(1w以上)

    MyBatis進行批量插入數時,一次性插入超過一千條的時候MyBatis開始報錯,本文主要介紹了MyBatis批量插入大量數據的解決方法,感興趣的可以了解一下
    2022-01-01

最新評論

崇阳县| 女性| 盘山县| 宜兰县| 许昌县| 简阳市| 崇礼县| 右玉县| 宝坻区| 太白县| 布尔津县| 安平县| 泊头市| 磐安县| 肃北| 澄江县| 宝山区| 合水县| 皮山县| 临颍县| 阳原县| 巨野县| 宜黄县| 迭部县| 灌南县| 武宣县| 明星| 大渡口区| 金湖县| 石门县| 庆阳市| 南和县| 金寨县| 华容县| 丽江市| 化德县| 新沂市| 周宁县| 胶州市| 红安县| 嘉鱼县|