av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

Shiro實現(xiàn)數(shù)據(jù)庫驗證的方法詳解(shiro數(shù)據(jù)庫驗證)

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

1. Shiro簡介

Shiro是一個功能強大的Java安全框架,它提供了身份驗證、授權(quán)、密碼加密等一系列安全相關(guān)的功能。Shiro的設(shè)計目標(biāo)是為Java應(yīng)用程序提供安全保障,既可以在Web應(yīng)用程序中使用,也可以在任何應(yīng)用程序中使用。Shiro的更大特點是易于使用、易于理解、易于擴(kuò)展。

2. Shiro數(shù)據(jù)庫驗證

在Web應(yīng)用程序中,用戶登錄是一個很常見的操作。Shiro提供了多種身份驗證方式,其中數(shù)據(jù)庫驗證是一種常見而且重要的驗證方式。Shiro的數(shù)據(jù)庫驗證主要是通過JDBC進(jìn)行實現(xiàn)的。在進(jìn)行數(shù)據(jù)庫驗證時,需要先配置數(shù)據(jù)源和Realm。

2.1 數(shù)據(jù)源配置

數(shù)據(jù)源是Shiro進(jìn)行數(shù)據(jù)庫驗證的關(guān)鍵,因此需要進(jìn)行正確的配置。在配置數(shù)據(jù)源時,可以使用JNDI或者直接使用DriverManager來創(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)簽定義了一個數(shù)據(jù)源,name屬性指定了數(shù)據(jù)源的名稱,type屬性指定了數(shù)據(jù)源的類型,url屬性指定了連接數(shù)據(jù)庫的URL,username屬性指定了連接數(shù)據(jù)庫的用戶名,password屬性指定了連接數(shù)據(jù)庫的密碼。

2.2 Realm配置

在Shiro中,Realm是進(jìn)行用戶身份驗證、權(quán)限驗證的關(guān)鍵。對于數(shù)據(jù)庫驗證來說,需要自定義一個Realm,并配置相應(yīng)的數(shù)據(jù)源。下面是一個基于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è)置了驗證用戶信息的SQL語句,setUserRolesQuery()方法設(shè)置了查詢用戶角色信息的SQL語句,setPermissionsQuery()方法設(shè)置了查詢用戶權(quán)限信息的SQL語句。用戶角色和權(quán)限信息可以在數(shù)據(jù)庫中自定義,這里就不再做詳細(xì)介紹。

3. Shiro數(shù)據(jù)庫驗證流程

當(dāng)用戶進(jìn)行Web應(yīng)用程序的登錄操作時,Shiro的數(shù)據(jù)庫驗證流程如下:

1. 用戶向服務(wù)器發(fā)送登錄請求;

2. 服務(wù)器將請求轉(zhuǎn)發(fā)給Shiro進(jìn)行處理;

3. Shiro判斷請求中的用戶名和密碼是否正確;

4. 如果用戶名和密碼正確,則將該用戶信息保存在Subject對象中;

5. 如果用戶名和密碼不正確,則返回登錄失敗的信息。

4.

相關(guān)問題拓展閱讀:

  • SpringBoot進(jìn)階之整合Shiro實現(xiàn)緩存和會話管理

SpringBoot進(jìn)階之整合Shiro實現(xiàn)緩存和會話管理

大家好,一直以來我都本著用最通俗的話理解核心的知識點, 我認(rèn)為所有的難點都離不開

「基礎(chǔ)知識」

的鋪墊。目前正在出一個

SpringBoot

長期系列教程,從入門到進(jìn)階, 篇幅會較多~

「大佬可以繞過 ~」

如果你是一路看過來的,很高興你能夠耐心看完。之前帶大家學(xué)了

Springboot

基礎(chǔ)部分,對基本的使用有了初步的認(rèn)識, 接下來的幾期內(nèi)容將會帶大家進(jìn)階使用,會先講解基礎(chǔ)

中間件

的使用和一些場景的應(yīng)用,或許這些技術(shù)你聽說過,沒看過也沒關(guān)系,沖前檔我會帶大家一步一步的入門,耐心看完你一定會有

收獲

~

上期帶大家學(xué)習(xí)了

Shiro

中如何進(jìn)行權(quán)限認(rèn)證,本期將帶大家學(xué)習(xí)

Shiro

中如何進(jìn)行

緩存和會話管理

,最后我們將做一個在線用戶管理以及強制下線用悔乎戶的功能,同樣的,我們集成到

Springboot

中。

首先我們要明白使用緩存的原因,為啥要用它 還記得之前帶大家實現(xiàn)的

用戶認(rèn)證

權(quán)限認(rèn)證

嗎,那里我使用了

MockUser

,真實場景中是要去數(shù)據(jù)查詢的,這樣一來就會產(chǎn)生耗時,請求多的時候數(shù)據(jù)庫肯定忙不過來了,所以我們需要使用緩存來提高程序響應(yīng)速度

緩存使用

Redis

,下面就帶大家整一下:

修改

ShiroConfig

,添加方法

這樣就可以了,大家可以把測試獲取用戶的地方改成數(shù)據(jù)庫獲取,看下

控制臺

sql日志會明顯減少,因為有一部分是從緩存拿的

這部分功能還是比較好玩的,學(xué)完可以自由發(fā)揮做一個房間功能,可以加入可以踢人,下面我們就開整

修改

ShiroConfig

,添加方法,因為我們使用的是

Redis

緩存

實現(xiàn)

SessionListener

最后同樣的,想要開啟需要我們注入到

Manager

中:

我們先定義一個類,用來記錄在線用戶:

那么怎么獲取呢?我們定義一個方法,大家實踐中可以抽到

Service

層,這里方便演示,我直接寫到控制器里

如果你看誰不爽,可以直接讓他下線,hhh~

是不是很簡單,這里就不演示了,大家自行試試

本期內(nèi)容就到這里結(jié)束了,總散亂結(jié)一下,本節(jié)主要講了

Shiro

如何進(jìn)行緩存以及如何進(jìn)行用戶會話管理,大家可以舉一反三,做一些小功能嘗試嘗試

下期給大家講講

Shiro

中如何整合

JWT

,這個大家應(yīng)該不陌生,如果不知道啥是

JWT

也沒關(guān)系,我會帶大家一步一步入門,下期也是

Shiro

系列的終極篇,內(nèi)容可能有點多,耐心看完哦。歡迎加群一起學(xué)習(xí)交流 ~

關(guān)于shiro 數(shù)據(jù)庫驗證的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。

創(chuàng)新互聯(lián)服務(wù)器托管擁有成都T3+級標(biāo)準(zhǔn)機(jī)房資源,具備完善的安防設(shè)施、三線及BGP網(wǎng)絡(luò)接入帶寬達(dá)10T,機(jī)柜接入千兆交換機(jī),能夠有效保證服務(wù)器托管業(yè)務(wù)安全、可靠、穩(wěn)定、高效運行;創(chuàng)新互聯(lián)專注于成都服務(wù)器托管租用十余年,得到成都等地區(qū)行業(yè)客戶的一致認(rèn)可。


文章名稱:Shiro實現(xiàn)數(shù)據(jù)庫驗證的方法詳解(shiro數(shù)據(jù)庫驗證)
文章來源:http://uogjgqi.cn/article/djidjeh.html
掃二維碼與項目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流