资源简介

利用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.xml

     文件         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.xml

     文件       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.xml

     文件       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.xml

     文件       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.xml

     文件        115  2018-03-02 10:10  springMvc实现SSO单点登录\SSOClient1\target\m2e-wtp\web-resources\meta-INF\MANIFEST.MF

     文件        232  2018-03-02 10:10  springMvc实现SSO单点登录\SSOClient1\target\m2e-wtp\web-resources\meta-INF\maven\com.yzz.ssoclient1\SSOClient1\pom.properties

     文件       4457  2018-03-02 10:10  springMvc实现SSO单点登录\SSOClient1\target\m2e-wtp\web-resources\meta-INF\maven\com.yzz.ssoclient1\SSOClient1\pom.xml

     文件        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.xml

............此处省略153个文件信息

评论

共有 条评论