新聞中心
隨著Web應(yīng)用的不斷發(fā)展,用戶的需求越來(lái)越高,安全性逐漸成為一個(gè)核心問(wèn)題。在Java開(kāi)發(fā)中,Shiro是一個(gè)優(yōu)秀的安全框架,能夠?qū)崿F(xiàn)身份驗(yàn)證、授權(quán)、密碼加密等功能。其中,Shiro的數(shù)據(jù)庫(kù)驗(yàn)證是非常重要的一部分。本文將詳細(xì)介紹Shiro實(shí)現(xiàn)數(shù)據(jù)庫(kù)驗(yàn)證的方法。

1. Shiro簡(jiǎn)介
Shiro是一個(gè)功能強(qiáng)大的Java安全框架,它提供了身份驗(yàn)證、授權(quán)、密碼加密等一系列安全相關(guān)的功能。Shiro的設(shè)計(jì)目標(biāo)是為Java應(yīng)用程序提供安全保障,既可以在Web應(yīng)用程序中使用,也可以在任何應(yīng)用程序中使用。Shiro的更大特點(diǎn)是易于使用、易于理解、易于擴(kuò)展。
2. Shiro數(shù)據(jù)庫(kù)驗(yàn)證
在Web應(yīng)用程序中,用戶登錄是一個(gè)很常見(jiàn)的操作。Shiro提供了多種身份驗(yàn)證方式,其中數(shù)據(jù)庫(kù)驗(yàn)證是一種常見(jiàn)而且重要的驗(yàn)證方式。Shiro的數(shù)據(jù)庫(kù)驗(yàn)證主要是通過(guò)JDBC進(jìn)行實(shí)現(xiàn)的。在進(jìn)行數(shù)據(jù)庫(kù)驗(yàn)證時(shí),需要先配置數(shù)據(jù)源和Realm。
2.1 數(shù)據(jù)源配置
數(shù)據(jù)源是Shiro進(jìn)行數(shù)據(jù)庫(kù)驗(yàn)證的關(guān)鍵,因此需要進(jìn)行正確的配置。在配置數(shù)據(jù)源時(shí),可以使用JNDI或者直接使用DriverManager來(lái)創(chuàng)建數(shù)據(jù)源。下面是一段使用JNDI方式配置數(shù)據(jù)源的代碼:
“`xml
maxIdle=”100″ maxActive=”500″ maxWt=”10000″
username=”test” password=”test” driverClassName=”com.mysql.jdbc.Driver”
url=”jdbc:mysql://localhost:3306/test”/>
“`
在上面的配置中,標(biāo)簽定義了一個(gè)數(shù)據(jù)源,name屬性指定了數(shù)據(jù)源的名稱,type屬性指定了數(shù)據(jù)源的類型,url屬性指定了連接數(shù)據(jù)庫(kù)的URL,username屬性指定了連接數(shù)據(jù)庫(kù)的用戶名,password屬性指定了連接數(shù)據(jù)庫(kù)的密碼。
2.2 Realm配置
在Shiro中,Realm是進(jìn)行用戶身份驗(yàn)證、權(quán)限驗(yàn)證的關(guān)鍵。對(duì)于數(shù)據(jù)庫(kù)驗(yàn)證來(lái)說(shuō),需要自定義一個(gè)Realm,并配置相應(yīng)的數(shù)據(jù)源。下面是一個(gè)基于JDBC的Realm的代碼示例:
“`java
public class JdbcRealm extends JdbcRealm {
public JdbcRealm() {
super.setDataSource(MyJdbcUtils.getDataSource());
super.setAuthenticationQuery(“SELECT password FROM users WHERE username = ?”);
super.setUserRolesQuery(“SELECT role_name FROM user_roles WHERE username = ?”);
super.setPermissionsQuery(“SELECT permission FROM roles_permissions WHERE role_name = ?”);
}
}
“`
在上面的配置中,setDataSource()方法設(shè)置了數(shù)據(jù)源,setAuthenticationQuery()方法設(shè)置了驗(yàn)證用戶信息的SQL語(yǔ)句,setUserRolesQuery()方法設(shè)置了查詢用戶角色信息的SQL語(yǔ)句,setPermissionsQuery()方法設(shè)置了查詢用戶權(quán)限信息的SQL語(yǔ)句。用戶角色和權(quán)限信息可以在數(shù)據(jù)庫(kù)中自定義,這里就不再做詳細(xì)介紹。
3. Shiro數(shù)據(jù)庫(kù)驗(yàn)證流程
當(dāng)用戶進(jìn)行Web應(yīng)用程序的登錄操作時(shí),Shiro的數(shù)據(jù)庫(kù)驗(yàn)證流程如下:
1. 用戶向服務(wù)器發(fā)送登錄請(qǐng)求;
2. 服務(wù)器將請(qǐng)求轉(zhuǎn)發(fā)給Shiro進(jìn)行處理;
3. Shiro判斷請(qǐng)求中的用戶名和密碼是否正確;
4. 如果用戶名和密碼正確,則將該用戶信息保存在Subject對(duì)象中;
5. 如果用戶名和密碼不正確,則返回登錄失敗的信息。
4.
相關(guān)問(wèn)題拓展閱讀:
- SpringBoot進(jìn)階之整合Shiro實(shí)現(xiàn)緩存和會(huì)話管理
SpringBoot進(jìn)階之整合Shiro實(shí)現(xiàn)緩存和會(huì)話管理
大家好,一直以來(lái)我都本著用最通俗的話理解核心的知識(shí)點(diǎn), 我認(rèn)為所有的難點(diǎn)都離不開(kāi)
「基礎(chǔ)知識(shí)」
的鋪墊。目前正在出一個(gè)
SpringBoot
長(zhǎng)期系列教程,從入門到進(jìn)階, 篇幅會(huì)較多~
「大佬可以繞過(guò) ~」
如果你是一路看過(guò)來(lái)的,很高興你能夠耐心看完。之前帶大家學(xué)了
Springboot
基礎(chǔ)部分,對(duì)基本的使用有了初步的認(rèn)識(shí), 接下來(lái)的幾期內(nèi)容將會(huì)帶大家進(jìn)階使用,會(huì)先講解基礎(chǔ)
中間件
的使用和一些場(chǎng)景的應(yīng)用,或許這些技術(shù)你聽(tīng)說(shuō)過(guò),沒(méi)看過(guò)也沒(méi)關(guān)系,沖前檔我會(huì)帶大家一步一步的入門,耐心看完你一定會(huì)有
收獲
~
上期帶大家學(xué)習(xí)了
Shiro
中如何進(jìn)行權(quán)限認(rèn)證,本期將帶大家學(xué)習(xí)
Shiro
中如何進(jìn)行
緩存和會(huì)話管理
,最后我們將做一個(gè)在線用戶管理以及強(qiáng)制下線用悔乎戶的功能,同樣的,我們集成到
Springboot
中。
首先我們要明白使用緩存的原因,為啥要用它 還記得之前帶大家實(shí)現(xiàn)的
用戶認(rèn)證
和
權(quán)限認(rèn)證
嗎,那里我使用了
MockUser
,真實(shí)場(chǎng)景中是要去數(shù)據(jù)查詢的,這樣一來(lái)就會(huì)產(chǎn)生耗時(shí),請(qǐng)求多的時(shí)候數(shù)據(jù)庫(kù)肯定忙不過(guò)來(lái)了,所以我們需要使用緩存來(lái)提高程序響應(yīng)速度
緩存使用
Redis
,下面就帶大家整一下:
修改
ShiroConfig
,添加方法
這樣就可以了,大家可以把測(cè)試獲取用戶的地方改成數(shù)據(jù)庫(kù)獲取,看下
控制臺(tái)
sql日志會(huì)明顯減少,因?yàn)橛幸徊糠质菑木彺婺玫?/p>
這部分功能還是比較好玩的,學(xué)完可以自由發(fā)揮做一個(gè)房間功能,可以加入可以踢人,下面我們就開(kāi)整
修改
ShiroConfig
,添加方法,因?yàn)槲覀兪褂玫氖?/p>
Redis
緩存
實(shí)現(xiàn)
SessionListener
最后同樣的,想要開(kāi)啟需要我們注入到
Manager
中:
我們先定義一個(gè)類,用來(lái)記錄在線用戶:
那么怎么獲取呢?我們定義一個(gè)方法,大家實(shí)踐中可以抽到
Service
層,這里方便演示,我直接寫(xiě)到控制器里
如果你看誰(shuí)不爽,可以直接讓他下線,hhh~
是不是很簡(jiǎn)單,這里就不演示了,大家自行試試
本期內(nèi)容就到這里結(jié)束了,總散亂結(jié)一下,本節(jié)主要講了
Shiro
如何進(jìn)行緩存以及如何進(jìn)行用戶會(huì)話管理,大家可以舉一反三,做一些小功能嘗試嘗試
下期給大家講講
Shiro
中如何整合
JWT
,這個(gè)大家應(yīng)該不陌生,如果不知道啥是
JWT
也沒(méi)關(guān)系,我會(huì)帶大家一步一步入門,下期也是
Shiro
系列的終極篇,內(nèi)容可能有點(diǎn)多,耐心看完哦。歡迎加群一起學(xué)習(xí)交流 ~
關(guān)于shiro 數(shù)據(jù)庫(kù)驗(yàn)證的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
創(chuàng)新互聯(lián)服務(wù)器托管擁有成都T3+級(jí)標(biāo)準(zhǔn)機(jī)房資源,具備完善的安防設(shè)施、三線及BGP網(wǎng)絡(luò)接入帶寬達(dá)10T,機(jī)柜接入千兆交換機(jī),能夠有效保證服務(wù)器托管業(yè)務(wù)安全、可靠、穩(wěn)定、高效運(yùn)行;創(chuàng)新互聯(lián)專注于成都服務(wù)器托管租用十余年,得到成都等地區(qū)行業(yè)客戶的一致認(rèn)可。
當(dāng)前標(biāo)題:Shiro實(shí)現(xiàn)數(shù)據(jù)庫(kù)驗(yàn)證的方法詳解(shiro數(shù)據(jù)庫(kù)驗(yàn)證)
路徑分享:http://www.dlmjj.cn/article/djidjeh.html


咨詢
建站咨詢
