已解決[Authentication failed for token submission,Illegal hexadecimal charcter s at index 1]


 

在初次學習使用shiro框架的時候碰到了這個問題,具體報錯情況如下:

[org.apache.shiro.authc.AbstractAuthenticator] - Authentication failed for token submission [org.apache.shiro.authc.UsernamePasswordToken - asdf, rememberMe=false]. Possible unexpected error? (Typical or expected login exceptions should extend from AuthenticationException).
java.lang.IllegalArgumentException: Illegal hexadecimal charcter s at index 1

at org.apache.shiro.codec.Hex.toDigit(Hex.java:156)
at org.apache.shiro.codec.Hex.decode(Hex.java:137)
at org.apache.shiro.codec.Hex.decode(Hex.java:107)s

....

原因:

  有錯誤信息可知,這是一個認證失敗錯誤,往后看,大概與封裝用戶信息的token有關,再往下看,java爆出的異常是非法16進制字符有問題==>shiro框架的加密/解密出了問題。

預判:

  要么是shiro對toke進行了加密,而從數據庫讀取的數據並未加密,故匹配信息失敗;

  要么是shiro沒有對token加密,而數據庫讀取的數據加了密,導致匹配失敗;

  還有一種可能就是,兩邊的加密方式不同,匹配失敗。

解決辦法:使兩邊的數據加密一致。

我的辦法:因為我的mysql數據沒有加密,所以我調整shiro的配置文件,去掉了加密模塊,然后再跑,就正常了。

<bean id="shiroDbRealm" class="com.rgl.realm.shiroDbRealm">
<!-- <property name="credentialsMatcher">
<bean class="org.apache.shiro.authc.credential.HashedCredentialsMatcher">
<property name="hashAlgorithmName" value="MD5"/>
</bean>
</property> -->
<property name="cacheManager" ref="cacheManager"/>
</bean>

 

被我屏蔽掉的那段就是md5加密的調用配置。
————————————————
版權聲明:本文為CSDN博主「geniusle201」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/geniusle201/java/article/details/70493517


免責聲明!

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



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