使用Shiro的JdbcRealm实现查询数据库进行身份认证
生活随笔
收集整理的這篇文章主要介紹了
使用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实现查询数据库进行身份认证的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Webservice入门教程_编写手机归
- 下一篇: 从实例入手Shiro并实现HellloW