国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > Apache > 正文

appcan開發移動app與服務器端session的狀態管理與交互

2024-08-27 18:22:35
字體:
來源:轉載
供稿:網友

我們進行web開發的時候,一般使用cookie或session來保存用戶的登錄狀態,通過檢查cookie或session的數據來驗證用戶是否具有對某些需要登錄的頁面的訪問權限,這一切都是通過瀏覽器來完成,這是b/s架構,但是,假如客戶端是移動應用端,那該怎么辦?因為這是c/s架構,無法使用使用cookie或session來檢驗用戶的狀態,此時的情況就好像瀏覽器禁用了cookie.

慶幸的是,這是有解決方法的,在禁用cookie的情況下,可以通過query_string來傳遞session_id,即在app發送登錄請求后,服務器端可以通過傳遞session_id到app,然后app保存session_id在移動設備上,在那些需要登錄訪問權限的功能,每一次交互請求附帶參數session_id,傳送到服務器端,再由服務器端檢查session_id的合法性來確定該用戶是否已登錄.

以下是一個簡單的移動開發示例,并沒有使用原生的,而是使用appcan來構建app.

1.app登錄請求:

  1. var url = 'http://127.0.0.1:8080/index.php?act=login&email=aa@qq.com&pwd=123456';  
  2. $.getJSON(url,function(res){ 
  3.  if(res.ok == 'yes'){ 
  4.   var storage = window.localStorage; 
  5.   if(storage) storage.setItem('sid',res.session_id); 
  6.  }else
  7.   uexWindow.toast(0, 5, '登錄失敗!', 4000); 
  8.   return
  9.  }   
  10. }, 'json',null, 'POST'''''); 

2.app請求用戶信息:

  1. var sid = ''
  2. var storage = window.localStorage; 
  3. if(storage) sid = storage.getItem('sid'); 
  4. var url = 'http://127.0.0.1:8080/index.php?act=uinfo&session_id='+sid;  
  5. $.getJSON(url,function(res){ 
  6.  if(res.ok == 'yes'){ 
  7.   var uname = res.username; 
  8.   uexWindow.toast(0, 5, '用戶名:'+uname, 4000); 
  9.   return
  10.  }else
  11.   uexWindow.toast(0, 5, '請先登錄!', 4000); 
  12.   return
  13.  }   
  14. }, 'json',null, 'POST'''''); 

3.服務器端php響應請求 index.php:

  1. <?php 
  2. /** 
  3.  * User: wudiweb.com 
  4.  * app與服務器端簡單示例 
  5.  */ 
  6. header("Content-Type: text/html; charset='utf-8'"); 
  7. session_start(); 
  8.  
  9. $act = $_REQUEST['act']; 
  10. $result = array('ok' => 'yes'); 
  11.  
  12. if($act == 'login'){ 
  13.     $email = $_REQUEST['email']; 
  14.     $pwd = $_REQUEST['pwd']; 
  15.  
  16.     if($email == 'aa@qq.com' && $pwd == '123456'){ 
  17.         $result['session_id'] = session_id(); 
  18.     }else
  19.         $result['ok'] = 'no'
  20.     } //開源軟件:Vevb.com 
  21. }elseif($act == 'uinfo'){ 
  22.     $session_id = $_REQUEST['session_id']; 
  23.     if($session_id == session_id()){ 
  24.         $result['username'] = 'Wudiweb'
  25.     }else
  26.         $result['ok'] = 'no'
  27.     } 
  28.  
  29. echo json_encode($result); 
  30. exit
  31. ?> 

注意,這只是一個簡單的用法,如果你認為不夠完善,可以在此基礎上進行擴展,例如加密session_id等.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 双流县| 武城县| 清流县| 南通市| 比如县| 扎兰屯市| 甘德县| 藁城市| 潞西市| 邯郸县| 伽师县| 福泉市| 大同市| 乡宁县| 肃宁县| 阿城市| 乐陵市| 博湖县| 凤阳县| 青铜峡市| 中方县| 赤城县| 民权县| 辽宁省| 蓬莱市| 陇川县| 高陵县| 米林县| 天柱县| 济宁市| 兰溪市| 巴里| 辽阳市| 科技| 乾安县| 肇州县| 绥中县| 乌拉特后旗| 大姚县| 合山市| 大洼县|