資源簡介
利用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目標檢測論文
評論
共有 條評論