session失效重定向登录页java_SSO单点登录完整实战实例

    随着公司系统的增加,每次新建一个项目是否还在做登录功能呢?这其实都是重复的工作,统一登录SSO你值得拥有。本文主要讲解,基于令牌token方式实现,同域与不同域均支持。

SpringBoot工程下的SSO单点登录整合代码实例Demo,文末附源码地址。

1.环境准备

  • SSO认证中心服务( www.mysso.com)

  • 客户端1(www.myclient1.com)

  • 客户端2(www.myclient2.com)

由于是Demo实例,这里若有要访问-需要修改一下本机host,添加如下映射

 127.0.0.1 www.mysso.com 127.0.0.1 www.myclient1.com 127.0.0.1 www.myclient2.com

2.搭建SSO认证中心服务

注意:本文主要讲代码实现如果要看流程相关请移步SSO单点登录全流程分析

问题来了,搭建一个SSO统一登录需要哪些功能?

  • 统一登录页+接口

  • 校验令牌有效性接口(调用来源:子系统)

  • 校验登录状态接口(调用来源:子系统)

  • 统一退出(调用来源:子系统或退出认证中心服务)

这里就不贴Maven依赖了,主要讲解功能,详见文末附源码。

2.1统一登录页

创建一个统一登录页

<html><head>    <meta charset="UTF-8">    <title>程序员小强-SSODemotitle>head><style>body.center {
        text-align: center;}style><body class="center"><div>    <h1>SSO用户统一登录h1>div><div>    <form name="loginForm" action="/sso/login" method="POST" accept-charset="UTF-8">        <div><input placeholder="用户名" value="admin" name="username" type="text"/>div>        <div><input placeholder="密码" value="123456" name="password" type="password"/>div>        <div style="color: red"><span th:text="${msg}">span>div>        <div><input name="redirectUrl" type="hidden" th:value="${redirectUrl}"/>div>        <input type="submit" value="登录"/>        <input type="reset" value="重置"/>    form>div>body>html>

效果图

0b00c33bd04e01ac6a8674ea02b5d21c.png

2.2统一登录接口

/** * 认证中心SSO统一登录方法 */@RequestMapping("/login")public String login(LoginParam loginParam, RedirectAttributes redirectAttributes,                    HttpSession session, Model model) {
      //Demo 项目此处模拟数据库账密校验  if (!"admin".equals(loginParam.getUsername()) || !"123456".equals(loginParam.getPassword())) {
          model.addAttribute("msg", "账户或密码错误,请重新登录!");      model.addAttribute("redirectUrl", loginParam.getRedirectUrl());      return "login";  }  //登录成功  //创建令牌  String ssoToken = UUID.randomUUID().toString();  //把令牌放到全局会话中  session.setAttribute("ssoToken", ssoToken);  /
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值