shiro與app利用token進行互動的解決方案
shiro在收到請求時會預設讀取cookie裡的資料來判別客戶端的身份,然而我的專案沒有用cookie,伺服器也不處理cookie資訊,我們看看shiro讀取cookie的程式碼:
//SimpleCookie類的readValue方法
public String readValue(HttpServletRequest request, HttpServletResponse ignored) {
String name = getName();
String value = null;
javax.servlet.http.Cookie cookie = getCookie(request, name);
if (cookie != null) {
// Validate that the cookie is used at the correct place.
String path = StringUtils.clean(getPath());
if (path != null && !pathMatches(path, request.getRequestURI())) {
log.warn("Found '{}' cookie at path '{}', but should be only used for '{}'" , new Object[] { name, request.getRequestURI(), path});
} else {
value = cookie.getValue();
log.debug("Found '{}' cookie value [{}]", name, value);
}
} else {
log.trace("No '{}' cookie value", name);
}
return value;
}
知道了問題的根源就好辦了,我給SimpleCookie建個子類,並重寫readValue方法:
@Override
public String readValue(HttpServletRequest request, HttpServletResponse ignored) {
String token = request.getParameter("tokenContent");
return token;
// return super.readValue(request, ignored);
}
然後對SimpleCookie的子類做下配置:
<!-- sessionManager -->
<bean id="sessionManager"
class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager">
<property name="sessionDAO" ref="redisSessionDAO" />
<property name="globalSessionTimeout" value="604800000" />
<!-- 會話Cookie -->
<property name="sessionIdCookie" ref="sessionIdCookie" />
</bean>
<!-- 自定義會話Cookie -->
<bean id="sessionIdCookie" class="com.cookie.MySimpleCookie">
<property name="httpOnly" value="true" />
<!--cookie的有效時間 -->
<property name="maxAge" value="604800" />
</bean>
使了一個偷樑換柱的手段,問題解決!不過當提交的表單是型別是multipart/form-data時會獲取不了token,解決方法下次再寫。
相關推薦
shiro與app利用token進行互動的解決方案
shiro在收到請求時會預設讀取cookie裡的資料來判別客戶端的身份,然而我的專案沒有用cookie,伺服器也不處理cookie資訊,我們看看shiro讀取cookie的程式碼: //SimpleCookie類的readValue方法 public Stri
APP利用token機制進行身份認證(理解token機制+簡單Java程式碼實現)
什麼是token token的意思是令牌,想象一下用過的qq令牌,是來自(騰訊)服務端生成的一串字元,作為客戶端(我們自己)進行請求的一個標識。比如說:改qq密碼。而這裡我們是自己開發App,我們的使用者用token請求登入,我們對他進行身份認證。 當用戶第一
javaweb和app的前後臺互動與Content-Type理解得出的解決方案
最近在做一個微信小程式,發現後臺獲取前臺傳送的資料,不能通過傳統的springmvc 直接對映獲取,通過參考案列小程式,發現獲取小程式引數是這樣的,程式碼如下。 StringBuilder sb = new StringBuilder();
android與PC,C#與Java 利用protobuf 進行無障礙通訊【Socket】
轉自https://www.cnblogs.com/TerryBlog/archive/2011/04/23/2025654.html protobuf 是什麼? Protocol buffers是一種編碼方法構造的一種有效而可擴充套件的格式的資料。 谷歌使用其內
Smart Link與Avaya簽署合作備忘錄 —— 利用聯絡中心雲解決方案加速擴充套件數字化服務
阿聯酋迪拜--(美國商業資訊)--教育培訓機構Al Khaleej旗下子公司、沙烏地阿拉伯領先的業務流程外包(BPO)公司宣佈Avaya 控股 (NYSE:AVYA)攜手合作,加速Smart Link的業務擴張及其數字服務組合的多元化發展。 兩家公司在GITEX科技周(GI
如何在私有區塊鏈上編寫、部署以及與以太坊進行互動的智慧合約
摘要:本文作者以極長的篇幅給出了在私有區塊鏈上編寫、部署以及與以太坊進行互動的智慧合約的較為完整的程式碼、相關細節步驟、使用者介面等。作者是希望藉助他這篇文章,大家可以自行在私有以太坊區塊鏈上編寫並部署一個智慧合約,以下是譯文。 這裡的規則是:如果通讀本文
使用Struts2和jQuery EasyUI實現簡單CRUD系統(八)——Struts與EasyUI使用JSON進行互動
由於前面寫了的四篇文章壓縮得太厲害,還有真正的原理也沒有弄通,所以重新寫了使用Struts2和jQuery EasyUI實現簡單CRUD系統(一)、(二)和(三)。知道ajax與struts間用json
Win 7 下跨越Session Id 0的Windows Service 並與活動Session UI進行互動
常規的WinForm程式截圖比較簡單,只需利用Graphics的CopyFromScreen函式即可擷取當前螢幕影象,如下4行程式碼即可完成截圖並儲存檔案的功能: Bitmap snapShot= new Bitmap(Screen.PrimaryScreen.Bound
redis系列之數據庫與緩存數據一致性解決方案
查詢緩存 src dev 信息 一次 ram ren red getc redis系列之數據庫與緩存數據一致性解決方案 數據庫與緩存讀寫模式策略 寫完數據庫後是否需要馬上更新緩存還是直接刪除緩存? (1)、如果寫數據庫的值與更新到緩存值是一樣的,不需要經過任何的計算,可以馬
(通用)Android App代碼混淆終極解決方案【轉】
rar $$ enable 知識 object ava write android ref App雖然沒有那麽的高大上,但是代碼的混淆是代表了程序員對App的責任心, 也是對App安全的一點點保證。今天我會將自己做Android混淆的過程和體會分享給大家,也避免大家少走彎路
dubbo 註解與spring 事務註解衝突完美解決方案
這幾天碰到dubbo 註解與spring 事務註解同時啟用dubbo註解無法生效的問題. 在網上找了大部分程式設計師們貼出的解決方案都沒有解決問題。最終在自己的分析下成功解決問題。 解決步驟如下,後面會貼出詳細分析原因。我用的Dubbo版本為2.5.3;spring MVC版本為3.2.13
CORS 跨域與 TP5中跨域的解決方案
在做專案過程中,使用Vue-element-admin作為前端,ThinkPHP5作為後端框架進行開發,會遭遇跨域問題,本文給出ThinkPHP5解決跨域 1.CORS的概念 CORS(Cross-Origin Resource Sharing 跨源資源共享),當
app配置智慧硬體的解決方案
app配置智慧硬體的解決方案 隨著越來越多的智慧硬體產品上市,越來越多的硬體都戴上了智慧的帽子,什麼智慧插座,智慧音箱,智慧稱等等。凡是所謂的智慧,都是通過wifi或者藍芽來連線網際網路,其中藍芽也只能算是手機的附屬品吧。
【小家思想】通俗易懂版講解JWT和OAuth2,以及他倆的區別和聯絡(Token鑑權解決方案)
相關閱讀 【小家java】java5新特性(簡述十大新特性) 重要一躍 【小家java】java6新特性(簡述十大新特性) 雞肋升級 【小家java】java7新特性(簡述八大新特性) 不溫不火 【小家java】java8新特性(簡述十大新特性) 飽受讚譽 【小家java】java9
VMware Workstation 與 Device/Credential Guard 不相容 解決方案
win10專業版官方解決方案 https://kb.vmware.com/s/article/2146361 win10家庭版解決方案 win10家庭版本身是不支援Hyper-V服務的,但是如果是“win10預覽體驗家庭版”,會在“服務”中發現有Hyper-V服務。解決方案:
Unity Android APP il2cpp熱更完美解決方案
1. 簡介 這是Unity Android APP il2cpp熱更完美解決方案的Demo(Git地址)的說明。 和現有的熱更解決方案不同的是,他不會引入多餘的語言(只是UnityScript,c#…),對Unity程式設計和編碼沒有任何限制。你可以在預置和場景裡的GameObjec
抱怨從何處來,又將向何處去 —— 談專案中管理者與執行者的矛盾以及建議解決方案
工作中,我們最常用的方式是以專案為單位執行任務。在專案中,我們又各有分工,有的人擔當專案管理者,有的人擔當專案開發人員,有的人擔當專案的整合、釋出人員等等。雖然我們看到的是分工明確,然而,在專案的執行過程中卻困難重重。客戶的變更,日程的壓力,無疑是我們最頭痛而且很難改變的。同
爬蟲爬取csdn登陸頁面持續載入,selenium模擬無法進行的解決方案
1.近日在爬取csdn時發現csdn突然需要登陸了,登陸沒關係,用selenium模擬填寫個登陸表單也就行了,但實際操作中發現,模擬進行到登陸頁面時頁面持續載入,後續步驟無法進行,自然無法登陸和爬取,如下圖: 只要在一定時間後終止瀏覽器繼續載入就行,嘗試了下面
平板以及小運存手機APP使用RecyclerView卡頓解決方案
前言 最近一直在做平板類應用的開發,關於自動售貨機的系統,我也是第一次接觸硬體以及Android盒子的開發,從剛開始的陌生到現在的熟悉,感覺還是收穫挺多的,最近專案快要上線了,介面真的很簡單,展示商品用的只是RecyclerView,也沒有巢狀,但是就是滑動卡頓
IOS開發~UISCrollView與UITableView巢狀使用終極解決方案
問題由來:專案需要做類似網易新聞的那種UIScrollView上放多個UITableView的效果,其中UITableView還要有下拉重新整理效果。 一開始的思路,也是最直觀的思路就是一個UIScrollView上放多個UITableView,然後發現UITab