JDBCRealm和自定义Realm

本文介绍了如何使用Shiro的JDBCRealm进行数据库认证,并详细讲解了如何自定义Realm以适应不同的数据源需求。通过步骤演示了设置users表、配置Shiro文件、实现Realm接口等过程,以及在自定义Realm中遇到的问题和解决方案。
摘要由CSDN通过智能技术生成

Shiro默认使用自带的IniRealm,IniRealm从ini配置文件中读取用户的信息。

大部分情况下需要从系统的数据库中读取用户信息,所以需要使用JDBCRealm或自定义Realm

6.1 实现一(使用JDBCRealm提供数据源,从而实现认证):

1) 在数据库中建立users表

JdbcRealm默认查找的表名为users,用户名为username,密码password

2)jar文件

3)shiro文件(src目录下)

[main]
#配置数据源
dataSource = com.mchange.v2.c3p0.ComboPooledDataSource
dataSource.driverClass = com.mysql.jdbc.Driver
dataSource.jdbcUrl = jdbc:mysql://localhost:3306/shiro-realm?useUnicode=true&characterEncoding=utf8
#dataSource.jdbcUrl = jdbc:mysql:///shiro-realm?useUnicode=true&characterEncoding=utf8
#数据库账户名
dataSource.user = root
#数据库连接密码
dataSource.password = 0100

#配置Realm,并为Realm注入数据源信息,JdbcRealm默认查找的表名为users,用户名为username,密码password
jdbcRealm = org.apache.shiro.realm.jdbc.JdbcRealm
jdbcRealm.dataSource = $dataSource

#注入Realm
securityManager.realm = $jdbcRealm

4)测试

package com.sxt.test;

import org.apache.shiro.SecurityUtils;
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.junit.Test;
/*
 * 实现简单认证
 */
public class TestAuthentication {
	
	@Test
	public void TestLogin(){
		
		// 1. 构建SecurityManager工厂
		IniSecurityManagerFactory securityManagerFactory = new IniSecurityManagerFactory("classpath:shiro.ini");
		// 2. 通过securityManagerFactory工厂获取SecurityManager实例
		SecurityManager securityManager = securityManagerFactory.getInstance();
		// 3. 将securityManager设置到运行环境当中
		SecurityUtils.setSecurityManager(securityManager);
		// 4. 获取subject实例
		Subject subject = SecurityUtils.getSubject();
		// 5. 创建用户名密码验证令牌Token
		UsernamePasswordToken token = new UsernamePasswordToken("v
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值