日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

使用Shiro的JdbcRealm实现查询数据库进行身份认证

發布時間:2025/3/19 数据库 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Shiro的JdbcRealm实现查询数据库进行身份认证 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

場景

Subject認證主體

Subject認證主體包含兩個信息:

1.Principals:身份,可以是用戶名,郵件,手機號碼等,可以用來標識一個登錄主體身份。

2.Credentials:憑證,常見有密碼,數字證書等。

身份認證流程

Realm以及JDBC Realm

Realm意思是域,shiro從Realm中獲取驗證數據。

Realm有很多種,例如常見的jdbc realm、jndi realm、text realm。

jdbc realm:Shiro 提供了一個 JdbcRealm,它會默認去尋找 users, roles, permissions 三張表做類似于 DAO 中的查詢。

實現

搭建數據庫以及表

新建users表

插入users表數據

建表符合如上規范,shiro就會自動查詢users表進行身份驗證。

新建配置文件

resource下新建jdbc_realm.ini文件

[main] jdbcRealm=org.apache.shiro.realm.jdbc.JdbcRealm dataSource=com.mchange.v2.c3p0.ComboPooledDataSource dataSource.driverClass=com.mysql.jdbc.Driver dataSource.jdbcUrl=jdbc:mysql://localhost:3306/shirotest dataSource.user=root dataSource.password=123 jdbcRealm.dataSource=$dataSource securityManager.realms=$jdbcRealm

注:

1.jdbcRealm是固定寫。

2.dataSource設置數據源。

3.jdbcRealm.dataSource=$dataSource是使用上面剛聲明的dataSource數據源。

進行身份驗證

新建類JdbcRealmTest.java

package com.badao.shiro;import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.config.IniSecurityManagerFactory; import org.apache.shiro.mgt.SecurityManager; import org.apache.shiro.subject.Subject; import org.apache.shiro.util.Factory;public class JdbcRealmTest {public static void main(String[] args) {//讀取配置文件,初始化化SecurityManager工廠Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:jdbc_realm.ini");//獲取securityManager實例SecurityManager securityManager = factory.getInstance();//將securityManager實例綁定到SecurityUtilsSecurityUtils.setSecurityManager(securityManager);//獲取當前用戶Subject currentUser = SecurityUtils.getSubject();//創建token令牌,用戶名 密碼UsernamePasswordToken token = new UsernamePasswordToken("badao","12");try {//身份認證 登錄?currentUser.login(token);System.out.println("身份認證成功");} catch (AuthenticationException e) {e.printStackTrace();System.out.println("身份認證失敗");}//退出currentUser.logout();} }

效果

輸入錯誤

輸入正確

源碼下載

https://download.csdn.net/download/badao_liumang_qizhi/11171730

?

總結

以上是生活随笔為你收集整理的使用Shiro的JdbcRealm实现查询数据库进行身份认证的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。