《SSO CAS單點系列》之 APP原生應用如何訪問CAS認證中心

4.開發支持APP登陸的移動服務端接口。接收APP登陸請求,採用HttpClient轉發至CAS認證中心登陸,返回json數據解析並最終返回給客戶端。本地會話採用redis維護,登陸成功,返回access_token。redis

接口定義:url: /login.json
入參: username string
password string
出參: ret string
msg string
access_token stringjson

核心代碼以下:app


做者:手插口袋_
連接:https://www.imooc.com/article/4200
來源:慕課網dom

 

https://www.imooc.com/article/4200url

 

 1 @RequestMapping("/login.json")
 2 public @ResponseBody ResultBean login(HttpServletRequest request, 
 3                      HttpServletResponse response) {
 4 
 5  ResultBean resultBean = new ResultBean();
 6  String username = request.getParameter("username");
 7  String password = request.getParameter("password");
 8 
 9  HttpClient httpClient = new DefaultHttpClient();
10 
11  String url = SSO_SERVER_URL + "?mode=app&service=" + SSO_CLIENT_SERVICE;
12 
13  HttpGet httpGet = new HttpGet(url); 
14  try{
15   HttpResponse httpClientResponse = httpClient.execute(httpGet);
16   int statusCode = httpClientResponse.getStatusLine().getStatusCode();
17   if (statusCode == HttpStatus.SC_OK){
18    String result = EntityUtils.toString(httpClientResponse.getEntity(),
19               "utf-8").replace('
20 ', ' ').replace('
21 ', ' ').trim();
22    //解析json數據
23    ObjectMapper objectMapper = new ObjectMapper();
24    LtBean ltBean = objectMapper.readValue(result, LtBean.class);
25    List<NameValuePair> formparams = new ArrayList<NameValuePair>();
26    formparams.add(new BasicNameValuePair("username", username));
27    formparams.add(new BasicNameValuePair("password", password));
28    formparams.add(new BasicNameValuePair("lt", ltBean.getLt()));
29    formparams.add(new BasicNameValuePair("execution", ltBean.getExecution()));
30    formparams.add(new BasicNameValuePair("_eventId", "submit"));
31 
32    UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formparams, "UTF-8");
33    HttpPost httpPost = new HttpPost(SSO_SERVER_URL);
34    httpPost.setEntity(entity);
35 
36    httpClientResponse = httpClient.execute(httpPost);
37    statusCode = httpClientResponse.getStatusLine().getStatusCode();
38 
39    if (statusCode == HttpStatus.SC_OK){
40      result = EntityUtils.toString(httpClientResponse.getEntity(), "utf-8")
41                 .replace('
42 ', ' ').replace('
43 ', ' ').trim();
44 
45      objectMapper = new ObjectMapper();
46      resultBean = objectMapper.readValue(result, ResultBean.class);
47      if(resultBean.getRet().equals("")){
48       String access_token = UUID.randomUUID().toString(); //會話句柄
49       TokenUtil.setAccess_token(access_token, username); //放入redis
50       resultBean.setRet("0");
51       resultBean.setMsg("登陸成功");
52       resultBean.setAccess_token(access_token);
53      }
54     }
55   }
56 
57  }catch(Exception e){
58   e.printStackTrace();
59   resultBean.setRet("-2");
60   resultBean.setMsg("系統服務錯誤,請稍後再試!");
61   return resultBean; 
62  }finally{
63   httpClient.getConnectionManager().shutdown();
64  }
65   return resultBean;  
66 }
67 
68 做者:手插口袋_
69 連接:https://www.imooc.com/article/4200
70 來源:慕課網
相關文章
相關標籤/搜索