亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > AJAX > 正文

Ajax登陸使用Spring Security緩存跳轉到登陸前的鏈接

2024-09-01 08:31:15
字體:
來源:轉載
供稿:網友

Spring Security緩存的應用之登陸后跳轉到登錄前源地址

什么意思?

  1. 用戶訪問網站,打開了一個鏈接:(origin url)起源鏈接
  2. 請求發送給服務器,服務器判斷用戶請求了受保護的資源。
  3. 由于用戶沒有登錄,服務器重定向到登錄頁面:/login
  4. 填寫表單,點擊登錄
  5. 瀏覽器將用戶名密碼以表單形式發送給服務器
  6. 服務器驗證用戶名密碼。成功,進入到下一步。否則要求用戶重新認證(第三步)
  7. 服務器對用戶擁有的權限(角色)判定。有權限,重定向到origin url; 權限不足,返回狀態碼403( “禁止”)。

從第3步,我們可以知道,用戶的請求被中斷了。

用戶登錄成功后(第7步),會被重定向到origin url,spring security通過使用緩存的請求,使得被中斷的請求能夠繼續執行。

具體請看 探究Spring Security緩存請求

我這里僅講解如何在ajax登陸后跳轉到登錄前的鏈接。

1. 首先,如果想跳轉到登陸之前的鏈接,我們需要拿到緩存:

SavedRequest savedRequest = requestCache.getRequest(request, response);

注意!若用戶是直接訪問沒有權限限制的登陸頁面,是不會有緩存的,也就是說savedRequest = null ,所以在使用緩存之前,我們需要做一個非null判斷,也就是:

if (savedRequest != null) {  // 邏輯代碼 }

2. 取到登錄前訪問的url

String url = savedRequest.getRedirectUrl();

3. 使用hashMap建立一個對象,這是為了后續向瀏覽器返回json數據

Map json = new HashMap<String, Object>();   json.put("code", 0);   json.put("message", "操作成功");   json.put("url", url);

可以看到這個json 對象比較簡單,其中url屬性是為了讓瀏覽器端的js跳轉的

4.設置響應體編碼和格式

response.setContentType(FebsConstant.JSON_UTF8);

5.向瀏覽器進行響應數據,這里的數據是json格式,是使用jackson工具包完成的,Maven地址: JacksonMaven地址

response.getWriter().write(mapper.writeValueAsString(ResponseBo.ok(messsage, url)));

下面是完整的Java代碼:

@Override public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {  // 不管請求哪個頁面,登陸成功后僅打開指定頁面index//  redirectStrategy.sendRedirect(request, response, "/index");  // 獲取緩存  SavedRequest savedRequest = requestCache.getRequest(request, response);  // 設置響應格式和編碼  response.setContentType(FebsConstant.JSON_UTF8);    // 緩存非空判斷  if (savedRequest != null) {   // 跳轉到之前引發跳轉的url   String url = savedRequest.getRedirectUrl();      String messsage = "成功";   // 準備json   Map json = new HashMap<String, Object>();   json.put("code", 0);   json.put("message", "操作成功");   json.put("url", url);   Object jsons = ResponseBo.ok(messsage, url);   response.getWriter().write(mapper.writeValueAsString(ResponseBo.ok(messsage, url)));  } else {   // 這個是沒有緩存,直接跳轉到默認ajax默認的頁面   response.getWriter().write(mapper.writeValueAsString(ResponseBo.ok()));  } }

6. 前端頁面Ajax代碼:

$.ajax(  {   type: "post",   url: "/login",   // 登陸表單數據序列化   data: $form.serialize(),   dataType: "json",   error: function (data, type, err) {    if (data.responseJSON != undefined) {     console.log(data.responseJSON.error != undefined);     console.log(JSON.stringify(data.responseJSON.error));     $MB.n_danger("error:" + JSON.stringify(data.responseJSON.error));    }   },   success: function (data) {    console.log(JSON.stringify(data));    alert(JSON.stringify(data));    if (data.code == 0) {     // 如果有url,則跳轉該url     if (data.url != undefined) {      $form[0].reset();      window.location.href = data.url;     } else {      // 重置表單的輸入框內容      $form[0].reset();      window.location.href = '/index';      // $form.attr("action", '/index');     }    } else {     // if (r.msg !== '驗證碼不能為空!') reloadCode();     console.log(data.message);    }   },  } );

7.不出意外的話,瀏覽器會收到下面的數據:

{"code":0,"message":"操作成功"}

如果你也收到了這條數據,說明已經成功了。

總結

以上所述是小編給大家介紹的Ajax登陸使用Spring Security緩存跳轉到登陸前的鏈接,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美色欧美亚洲高清在线视频| 欧美插天视频在线播放| 精品久久久久久中文字幕| 成人免费观看网址| 国产精品激情av电影在线观看| 成人在线播放av| 亚洲成人免费在线视频| 亚洲日韩中文字幕| 欧美激情在线一区| 精品偷拍各种wc美女嘘嘘| 日本久久久久久久久| 亚洲精品国产拍免费91在线| 久久久免费高清电视剧观看| 国产日韩综合一区二区性色av| 欧美成人亚洲成人日韩成人| 国产福利精品在线| 免费97视频在线精品国自产拍| 欧美性极品xxxx娇小| 538国产精品一区二区免费视频| 亚洲午夜久久久久久久| 秋霞av国产精品一区| 97国产精品视频| 欧美乱妇40p| 久久69精品久久久久久久电影好| 美日韩精品视频免费看| 欧美激情乱人伦| 国产精品va在线播放| 欧美另类极品videosbest最新版本| 少妇av一区二区三区| 亚洲国产精品一区二区三区| 亚洲a∨日韩av高清在线观看| 欧美日韩精品在线播放| 国产丝袜视频一区| 美女撒尿一区二区三区| xxx一区二区| 伊是香蕉大人久久| 91精品国产乱码久久久久久蜜臀| 欧美日韩精品二区| 久久91精品国产91久久久| 欧美日韩综合视频| 亚洲天堂精品在线| 色综合91久久精品中文字幕| 亚洲欧洲视频在线| 日韩高清电影免费观看完整版| 夜夜嗨av一区二区三区四区| 日韩精品中文字幕视频在线| 精品久久久久久中文字幕一区奶水| 亚洲在线观看视频| 青青久久av北条麻妃黑人| 亚洲欧美日韩久久久久久| 日韩视频在线一区| 九九精品在线视频| 久久久精品一区二区三区| 欧美丝袜美女中出在线| 国产精品极品美女粉嫩高清在线| 色777狠狠综合秋免鲁丝| 欧美重口另类videos人妖| 国内精品久久久久久影视8| www.国产一区| 欧美性猛交xxxx黑人| 91在线直播亚洲| 人人爽久久涩噜噜噜网站| 久久精品国产精品| 欧美三级xxx| 精品久久中文字幕久久av| 欧美日韩午夜激情| 51久久精品夜色国产麻豆| 欧美极品少妇全裸体| 精品久久久久久亚洲国产300| 国产精品777| 欧美久久精品一级黑人c片| 亚洲精品国产精品国自产在线| 亚洲欧美色图片| 国产精品久久久一区| 国内外成人免费激情在线视频网站| 日韩免费在线免费观看| 91精品国产自产在线观看永久| 原创国产精品91| 久久天天躁狠狠躁夜夜爽蜜月| 亚洲综合精品一区二区| 欧美精品电影免费在线观看| 在线成人一区二区| 亚洲一区二区久久久久久| 国产免费久久av| 国产专区精品视频| 亚洲精品成人av| 日韩精品福利在线| 亚洲欧洲xxxx| 欧美日韩在线视频一区二区| 中文字幕欧美专区| 久久久久久噜噜噜久久久精品| 日本19禁啪啪免费观看www| 亚洲欧美一区二区三区四区| 中文字幕九色91在线| 国产精品久久久久久久av大片| 伊人久久精品视频| 久久久久久久香蕉网| 精品美女久久久久久免费| 91亚洲精品一区| 91精品国产91久久久久久吃药| 91精品在线影院| 日韩中文在线中文网三级| 亚洲精品国产电影| 国产亚洲欧美aaaa| 日韩成人免费视频| 欧美一区二区三区图| 日韩av在线免费看| 91探花福利精品国产自产在线| 日韩精品丝袜在线| 日韩免费精品视频| 色综久久综合桃花网| 成人国产亚洲精品a区天堂华泰| 久久亚洲国产成人| 亚洲精品动漫久久久久| 欧美日韩亚洲视频| 最近中文字幕mv在线一区二区三区四区| 国产欧美日韩专区发布| 国自产精品手机在线观看视频| 日韩欧美精品网址| 亚洲第一网中文字幕| 尤物九九久久国产精品的特点| 亚洲第一黄色网| 亚洲肉体裸体xxxx137| 亚洲成人黄色在线| 国产精品扒开腿爽爽爽视频| 久久久久中文字幕| 亚洲激情成人网| 亚洲白拍色综合图区| 亚洲人成在线观看网站高清| 国产日韩欧美另类| 国产啪精品视频| 亚洲天天在线日亚洲洲精| 国产狼人综合免费视频| 国产精品情侣自拍| 粉嫩av一区二区三区免费野| 欧美性20hd另类| 人人做人人澡人人爽欧美| 国产成人精品国内自产拍免费看| 欧美高清激情视频| 亚洲精品自拍视频| 奇门遁甲1982国语版免费观看高清| 欧美专区福利在线| 成人中文字幕在线观看| 51精品国产黑色丝袜高跟鞋| 亚洲成人久久久久| 国产视频精品久久久| 久久久久久久久久国产| 日韩在线观看免费全| 2020欧美日韩在线视频| 成人激情视频在线| 国产日韩中文在线| 欧美日韩精品中文字幕| 国产精品美乳在线观看| 911国产网站尤物在线观看| 亚洲午夜精品久久久久久性色| 国产亚洲欧美日韩精品| 97avcom| 国内久久久精品| 91精品啪aⅴ在线观看国产| 欧美一区二区三区图| 啊v视频在线一区二区三区| 国产一区视频在线| 在线性视频日韩欧美| 亚洲欧美日韩天堂一区二区|