资源简介
利用springMvc 实现的简单的单点登录Demo,内含三个小Mavn项目分别是
1、认证中心SSOServer
2、子系统1SSOClient1
3、子系统2SSOClient2
文章请参考 http://blog.csdn.net/qq_31183297/article/details/79419222
代码片段和文件信息
package com.yzz.ssoclient1.controller;
import java.io.IOException;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.methods.PostMethod;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import com.alibaba.fastjson.JSONobject;
import com.yzz.ssoclient1.util.SessionUtil;
/**
*
* @author yzz
*客户端部分,本想只用一个session存储局部会话,收到服务端的退出请求后直接调用request.getSession().removeAttribute(“token“)清空局部会话;
*结果发现,服务端利用httpClient通知客户端的时候是新建立的一个会话,此时的session和我们局部建立的session并不是同一个。
*解决办法:
*自己维护一个session管理类,利用map将局部会话的session对象和id存储起来。收到请求后再销毁该session
*/
@Controller
public class SSOClientController {
//拦截所有获取资源请求
@RequestMapping(““)
public String ssoClient(HttpServletRequest requestModelMap map){
//判断请求的链接中是否有token参数
String token=request.getParameter(“token“);
String url=request.getParameter(“url“);
if(token!=null){
//如果有表示是认证服务器返回的
String allSessionId=request.getParameter(“allSessionId“);
return “redirect:http://localhost:8088/SSOClient1/checkToken?token=“+token+“&allSessionId=“+allSessionId;
}else if(url!=null){
return “redirect:http://localhost:8088/SSOClient1/login?url=“+url;
}else{
//其他请求,继续判断是否创建了和用户之间的局部会话
JSONobject j=(JSONobject) request.getSession().getAttribute(“token“);
if(j!=null){
System.out.println(“客户端1已经登录存在局部会话:“+j);
System.out.println(“本次局部会话的localSessionId:“+request.getSession().getId());
map.addAttribute(“userName“ j.getString(“userName“));
map.addAttribute(“allSessionId“ j.getString(“allSessionId“));
return “index“;
}else{
//未登录
return “redirect:http://localhost:8088/SSOServer?clientUrl=http://localhost:8088/SSOClient1“;
}
}
}
//客户端接收token并且进行验证
@RequestMapping(value=“/checkToken“)
public String checkToken(HttpServletRequest requestModelMap map){
String token=request.getParameter(“token“);
String allSessionId=request.getParameter(“allSessionId“);
//利用httpClient进行验证
String basePath = request.getScheme() + “://“ + request.getServerName() + “:“
+ request.getServerPort() + request.getContextPath();
HttpClient httpClient = new HttpClient();
PostMethod postMethod = new PostMethod(“http://localhost:8088/SSOServer/tokenCheck“);
postMethod.addParameter(“token“ token);
postMethod.addParameter(“allSessionId“ allSessionId);
postMethod.addParameter(“clientUrl“basePath);
try {
httpClient.executeMethod(postMethod);
String resultJson = postMethod.getResponseBodyAsString();
postMethod.releaseConnect
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 949 2018-02-27 09:52 springMvc实现SSO单点登录\SSOClient1\.classpath
文件 1086 2018-02-27 09:52 springMvc实现SSO单点登录\SSOClient1\.project
文件 639 2018-02-27 09:52 springMvc实现SSO单点登录\SSOClient1\.settings\.jsdtscope
文件 430 2018-02-27 09:51 springMvc实现SSO单点登录\SSOClient1\.settings\org.eclipse.jdt.core.prefs
文件 90 2018-02-27 09:51 springMvc实现SSO单点登录\SSOClient1\.settings\org.eclipse.m2e.core.prefs
文件 755 2018-02-27 09:52 springMvc实现SSO单点登录\SSOClient1\.settings\org.eclipse.wst.common.component
文件 252 2018-02-27 09:52 springMvc实现SSO单点登录\SSOClient1\.settings\org.eclipse.wst.common.project.facet.core.xm
文件 49 2018-02-27 09:52 springMvc实现SSO单点登录\SSOClient1\.settings\org.eclipse.wst.jsdt.ui.superType.container
文件 6 2018-02-27 09:52 springMvc实现SSO单点登录\SSOClient1\.settings\org.eclipse.wst.jsdt.ui.superType.name
文件 50 2018-02-27 09:52 springMvc实现SSO单点登录\SSOClient1\.settings\org.eclipse.wst.validation.prefs
文件 4457 2018-02-28 15:51 springMvc实现SSO单点登录\SSOClient1\pom.xm
文件 5498 2018-03-02 10:10 springMvc实现SSO单点登录\SSOClient1\src\main\java\com\yzz\ssoclient1\controller\SSOClientController.java
文件 1027 2018-03-01 15:44 springMvc实现SSO单点登录\SSOClient1\src\main\java\com\yzz\ssoclient1\util\SessionUtil.java
文件 2324 2018-02-28 16:08 springMvc实现SSO单点登录\SSOClient1\src\main\resources\spring-mvc.xm
文件 1135 2018-03-02 11:06 springMvc实现SSO单点登录\SSOClient1\src\main\webapp\WEB-INF\pages\index.jsp
文件 815 2018-03-02 11:03 springMvc实现SSO单点登录\SSOClient1\src\main\webapp\WEB-INF\pages\login.jsp
文件 2525 2018-03-02 10:14 springMvc实现SSO单点登录\SSOClient1\src\main\webapp\WEB-INF\web.xm
文件 5579 2018-03-02 10:10 springMvc实现SSO单点登录\SSOClient1\target\classes\com\yzz\ssoclient1\controller\SSOClientController.class
文件 1720 2018-03-01 15:44 springMvc实现SSO单点登录\SSOClient1\target\classes\com\yzz\ssoclient1\util\SessionUtil.class
文件 2324 2018-02-28 16:08 springMvc实现SSO单点登录\SSOClient1\target\classes\spring-mvc.xm
文件 115 2018-03-02 10:10 springMvc实现SSO单点登录\SSOClient1\target\m2e-wtp\web-resources\me
文件 232 2018-03-02 10:10 springMvc实现SSO单点登录\SSOClient1\target\m2e-wtp\web-resources\me
文件 4457 2018-03-02 10:10 springMvc实现SSO单点登录\SSOClient1\target\m2e-wtp\web-resources\me
文件 882 2018-02-28 15:56 springMvc实现SSO单点登录\SSOClient2\.classpath
文件 1086 2018-02-28 15:55 springMvc实现SSO单点登录\SSOClient2\.project
文件 639 2018-02-28 15:55 springMvc实现SSO单点登录\SSOClient2\.settings\.jsdtscope
文件 430 2018-02-28 15:55 springMvc实现SSO单点登录\SSOClient2\.settings\org.eclipse.jdt.core.prefs
文件 90 2018-02-28 15:55 springMvc实现SSO单点登录\SSOClient2\.settings\org.eclipse.m2e.core.prefs
文件 755 2018-02-28 15:56 springMvc实现SSO单点登录\SSOClient2\.settings\org.eclipse.wst.common.component
文件 252 2018-02-28 15:55 springMvc实现SSO单点登录\SSOClient2\.settings\org.eclipse.wst.common.project.facet.core.xm
............此处省略153个文件信息
- 上一篇:labview串口调试程序
- 下一篇:CVPR2017目标检测论文
相关资源
- 尚硅谷佟刚老师SpringMVC视频教程百度
- SpringMVC+Shiro+MongoDB+BootStrap基础框架
- 利用MVC(SpringMVC+Spring+MyBatis)实现购
- AWS Certified Developer Associate模拟题 - P
- AWS Certified Developer Associate模拟题
- TSSOP封装尺寸
- springboot shiro pac4j cas jwt认证中心sso完
- ssop28封装
- deepin-qq+crossover+crossover-helper
- spring+mybatis+springmvc+ajax简单聊天室
- springmvc4+spring4+hibernate5.1.3+二级缓存
- springMVC配置连接数据库实现登录功能
- SpringSpringMVCmybatis电商项目实战教程
- maven+spring4+springmvc+redis实现分页
- SSO CAS Server 二次开发说明文档
- 致远OA与帆软BI单点登录配置方法
- xmdterm.tcl : 解决Vivado 2016.4 的 No Elf f
- NHS3100系统板开发环境LPCXpresso的安装及
- IDEA实现 springmvc的简单注册登录功能的
- SpringMVC+MyBatis企业应用实战+源码
- TSSOP封装库
-
VIA Telecom CBP5.5/5.6 CDMA ba
seband Proces - NC5系列Portal单点登录及系统集成红皮
- 传智播客 最新版淘淘商城视频教程及
- SSM完整框架
- 2015_MLDN_mybatis_hibernate_springmvc_等视频
- SSOP16,20,28 AD 3D封装
- maven+springMVC集成的neo4j
- springMVC+多线程+kafka的 demo基于maven
- springmvc+poi 导入导出文件controller以及
评论
共有 条评论