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


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

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

核心代碼如下:


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

 

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

 

 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 來源:慕課網

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM