/*
* 用于處理通過開放平台登陸請求
* */
@RequestMapping("/ssologin")
public String ssologin(ModelMap modelMap, HttpServletRequest request) throws Exception{
LoginSituation loginSituation = LoginSituation.Failure;
//從資料中的配置表,擷取SSO伺服器位址
String ssoURL = sysConfigService.getSsoDomainName();
String uId = request.getParameter("uId");
String uName = request.getParameter("uName");
String token = request.getParameter("token");
if(uId == null || uName == null || token == null){
System.out.println("SSO使用者資訊有誤!");
return "/ssoerror/error_userinfo";
}
JSONObject jo = new JSONObject();
jo.put("uId", uId);
jo.put("uName", uName);
jo.put("token", token);
System.out.println("jsonObject:" + jo);
String postXML = jo.toString();
//向SSO伺服器發送請求
String result = HttpPostUtil.post(postXML, ssoURL);
if(result == null || result.trim().equals("")){
return "/ssoerror/error_disconnect";
}
//從SSO伺服器傳回的響應消息擷取“resultCode”字段
JSONObject jo2 = JSONObject.fromObject(result);
String resultCode = jo2.getString("resultCode");
System.out.println("resultCode=" + resultCode);
if(resultCode !=null && "200".equals(resultCode.trim())){
//封裝sso單點登陸使用者資訊
LoginInfo loginInfo = new LoginInfo();
// uName += "@open"; //在SSO使用者名後加“@open”以區分是本地使用者還是SSO使用者
loginInfo.setLoginName(uName);
loginInfo.setPassword(uName);//密碼預設與使用者名相同
//驗證sso單點登陸使用者資訊
loginSituation = loginService.userSsologin(loginInfo, modelMap, request);
request.getSession().setAttribute("loginSituation", loginSituation);
}
//SSO驗證失敗
else if(resultCode !=null && "400".equals(resultCode.trim())){
System.out.println("驗證失敗!");
// loginSituation = LoginSituation.Failure;
return "/ssoerror/error_validation";
}
//傳回驗證通過的頁面
return getViewByLoginSituation(loginSituation);
// return loginSituation.getIntCode();
}
捐助開發者
在興趣的驅動下,寫一個
免費
的東西,有欣喜,也還有汗水,希望你喜歡我的作品,同時也能支援一下。 當然,有錢捧個錢場(右上角的愛心标志,支援支付寶和PayPal捐助),沒錢捧個人場,謝謝各位。

謝謝您的贊助,我會做的更好!