资源简介
利用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目标检测论文
相关资源
- mexLasso.m 及mexLasso.mexw64
- redisson的demo
- MT6771T_LTE-A_Smartphone_Application_Processor
- Arduino教程 Lesson 之--自制风扇
- 基于web的图书馆运营系统
- Laboratory investigation of the effects of str
- Association of estrogen receptor alpha polymor
- springmvc+mybatis点餐系统(包含完整数据
- springMVC的学习代码
- Shopping+在线购物商城的实现Spring+Spr
- springmvc+Mybatis+axis2+webservice+quartz作业整
- Molecular identification polymorphism and asso
- Anti-CD3 antibody treatment ameliorates transf
- SUMMARIZATION STUDY ON GENERAL PROFILES FOR SC
- 使用redisson替代jedis
- springmvc 实体层自动生成工具
- η变形的AdS2×S2×T6超弦的P
- η变形对称空间sigma模型的Poisson-L
- springmvc_2020.rar
- 基于SSM的校社联社团管理系统SpringM
- 关于泊松点过程的生成方法-Report1_P
- springmvc+netty实现聊天功能
- HololensSocketDemo.rar
- SpringMVC.xmind思维导图 超级详细版
- 智能排班系统Spring+SpringMVC+MyBatis+Pat
- Springmvc,BS架构下新闻发布系统
-
SAP Businessob
jects Web Intelligence 用户指 - 使用SSM框架开发企业级应用项目实战
- springmvc 增删改查
- 544924_intel skylake平台EDS_CPU规格书
川公网安备 51152502000135号
评论
共有 条评论