使用springboot结合vue实现sso单点登录

网友投稿 440 2023-01-03


使用springboot结合vue实现sso单点登录

本文实例为大家分享了springboot vue实现sso单点登录的具体代码,供大家参考,具体内容如下

项目结构:

开发工具:idea, maven3

静态文件下载地址

1.pom文件:

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

org.springframework.boot

spring-boot-starter-parent

2.1.2.RELEASE

com.xicheng

ssodemo

0.0.1-SNAPSHOT

ssodemo

Demo project for Spring Boot

1.8

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter-thymeleaf

org.springframework.boot

spring-boot-starter-test

test

org.springframework.boot

spring-boot-maven-plugin

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

org.springframework.boot

spring-boot-starter-parent

2.1.2.RELEASE

com.xicheng

ssodemo

0.0.1-SNAPSHOT

ssodemo

Demo project for Spring Boot

1.8

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter-thymeleaf

org.springframework.boot

spring-boot-starter-test

test

org.springframework.boot

spring-boot-maven-plugin

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;

nuSmNuuAKp

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.登录页面及成功失败页面编写

登录

This is success page!

This is error page!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:机票预订系统接口设计(飞机票订票系统设计)
下一篇:android 实现接口(Android 接口)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~