jdbcRealm = new JdbcRealm(); jdbcRealm.setDataSource(ds); jdbcRealm.setPermissionsLookupEnabled...=org.apache.shiro.realm.jdbc.JdbcRealm jdbcRealm.dataSource=$dataSource jdbcRealm.permissionsLookupEnabled...会自动调用 jdbcRealm.setPermissionsLookupEnabled(true),对于这种常量值会自动类型转换。...Array/Set/List setter 注入 authenticator.array=1,2,3 authenticator.set=$jdbcRealm,$jdbcRealm 多个之间通过 “,”...Map setter 注入 authenticator.map=$jdbcRealm:$jdbcRealm,1:1,key:abc 即格式是:map=key:value,key:value,可以注入常量及引用值
第一种: // JdbcRealm 测试 Shiro SQL @Test public void testAuthenticationShiroSQL() { JdbcRealm jdbcRealm...= new JdbcRealm(); jdbcRealm.setDataSource(druidDataSource); jdbcRealm.setPermissionsLookupEnabled...测试 Custom SQL @Test public void testAuthenticationCustomSQL() { JdbcRealm jdbcRealm = new JdbcRealm...(); jdbcRealm.setDataSource(druidDataSource); jdbcRealm.setPermissionsLookupEnabled(true);...; jdbcRealm.setAuthenticationQuery(sql); DefaultSecurityManager defaultSecurityManager = new
-- 这里主要是设置自定义的单jdbcRealm应用,若有多个Realm,可使用'realms'属性代替 --> <property name="authorizationCachingEnabled...public class <em>jdbcRealm</em> extends AuthorizingRealm { @Override public void setName(String name) {
artifactId>mysql-connector-java 5.1.38 同时ini文件如下: [main] jdbcRealm...=org.apache.shiro.realm.jdbc.JdbcRealm #数据库指定自己的表和字段 #jdbcRealm=com.shiro.realm.jdbcrealm.UserJdbcRealm...dataSource.jdbcUrl=jdbc:mysql://localhost:3306/shiro dataSource.user=root dataSource.password=123456 jdbcRealm.dataSource...=$dataSource securityManager.realms=$jdbcRealm 其余的处理都是相同的,可以打开 org.apache.shiro.realm.jdbc.JdbcRealm
数据库文件在项目src\sql目录下) 注意事项: 表名一定要是: users 用户名列名必须是: userName(大小写不区分) ** jdbc_realm.ini配置文件 [main] jdbcRealm...=org.apache.shiro.realm.jdbc.JdbcRealm ;定义JdbcRealm实例-固定语法 dataSource=com.mchange.v2.c3p0.ComboPooledDataSource...;数据库链接池-查看JdbcRealm类的源码可以看到需要dataSource数据源 在om.xml导入c3p0的jar包 dataSource.driverClass=com.mysql.jdbc.Driver...mysql://localhost:3306/db_shiroD ;数据库连接地址 dataSource.user=root ;数据库账号 dataSource.password=123456 ;数据库密码 jdbcRealm.dataSource...=$dataSource ;为jdbcRealm赋值dataSource,jdbcRealm调用set securityManager.realms=$jdbcRealm ;这个realms可以有多个,
JdbcRealm实际上是AuthenticatingRealm的子类,关于AuthenticatingRealm我们在后面还会详细说到,这里先不展开。接下来我们就来详细说说这个JdbcRealm。...4.2 JdbcRealm 准备工作 使用JdbcRealm,涉及到数据库操作,要用到数据库连接池,这里我使用Druid数据库连接池,因此首先添加如下依赖: <groupId...=$dataSource jdbcRealm.permissionsLookupEnabled=true # 修改JdbcRealm中的credentialsMatcher属性 jdbcRealm.credentialsMatcher...7.3 非JdbcRealm如何配置盐 OK,刚刚是在JdbcRealm中配置了盐,如果没用JdbcRealm,而是自己定义的普通Realm,要怎么解决配置盐的问题?...13.4 测试 由于我这里使用了JdbcRealm,如果使用了自定义Realm那么可以通过打日志看是否使用了缓存,使用了JdbcRealm之后,我们可以通过打断点来查看是否应用了缓存,比如我执行如下代码
DefaultSecurityManager defaultSecurityManager = new DefaultSecurityManager(); // 构建 JdbcRelam JdbcRealm...jdbcRealm = new JdbcRealm(); // 为 JdbcRelam 设置数据源 jdbcRealm.setDataSource(dataSource...(jdbcRealm); SecurityUtils.setSecurityManager(defaultSecurityManager); Subject subject...但在实际项目开发中,我们不可能完全按照 Shiro 提供的这种方式来建表,我们可以通过修改 JdbcRealm 的默认查询语句来实现: jdbcRealm.setAuthenticationQuery(...String authenticationQuery); jdbcRealm.setPermissionsQuery(String permissionsQuery); jdbcRealm.setUserRolesQuery
; 64 } 65 66 } 8、Shiro内置的Realm,比如 IniRealm、JdbcRealm。...35 JdbcRealm jdbcRealm = new JdbcRealm(); 36 // 设置jdbc的数据源 37 jdbcRealm.setDataSource...39 jdbcRealm.setPermissionsLookupEnabled(true); 40 41 // 1、认证第一步,构建SecurityManager环境...35 JdbcRealm jdbcRealm = new JdbcRealm(); 36 // 设置jdbc的数据源 37 jdbcRealm.setDataSource..."; 48 jdbcRealm.setUserRolesQuery(userRoleSql); 49 50 // 角色权限自定义表 51 String
07-02 14:06 * @todo 创建一个测试类,测试认证 */ public class AuthenticationTest { //除了SimpleAccountRealm还有JdbcRealm..."123123"); } @Test public void testAutentication() { //1.创建jdbcReaml对象 JdbcRealm...jdbcRealm = new JdbcRealm(); //2.设置数据源 jdbcRealm.setDataSource(dataSource);...//这里需要注意的是,在使用JdbcRealm的时候要设置权限的开关,只有设置为true时才会去查询权限数据 jdbcRealm.setPermissionsLookupEnabled(...八、自定义Realm 通过查看JdbcRealm或者IniRealm的源码可以发现,它们都继承自AuthorizingRealm,所以要自定义Realm也要使自定义的Realm继承AuthorizingRealm
数据库(JdbcRealm) 首先需要创建表,这里我们采用了默认的查询方式,但是这种查询方式是不可用的,这里只做演示用。后面会说到关于自定义 Realm ,会详细说数据库的设计。...public class AuthenticationJdbcRealmTest { // 创建一个简单的认证 realm 也就是认证信息存放在对象中的 JdbcRealm jdbcRealm...= new JdbcRealm(); @Test public void authentication(){ DruidDataSource dataSource =...(dataSource); jdbcRealm.setPermissionsLookupEnabled(true);//这是一个坑 ,默认权限表不进行查找 // 创建一个...securityManager 环境 SecurityManager securityManager = new DefaultSecurityManager(jdbcRealm);
主要的文件就是这两个,一个是配置的,一个是用来进行测试的 jdbc_realm.ini配置文件中的内容如下 [main] jdbcRealm=org.apache.shiro.realm.jdbc.JdbcRealm...dataSource.jdbcUrl=jdbc:mysql://localhost:3306/db_shiro dataSource.user=root dataSource.password=root jdbcRealm.dataSource...=$dataSource securityManager.realms=$jdbcRealm TestJdbc_realm.java文件中的内容如下 package com.zuoyan.shiro;
dataSource.url=jdbc:mysql://127.0.0.1:3306/shiro dataSource.username=root dataSource.password=123456 jdbcRealm...=org.apache.shiro.realm.jdbc.JdbcRealm jdbcRealm.dataSource=$dataSource myRealm=com.sucl.shiro.realm.MyRealm...securityManager.realms=$jdbcRealm #多realm #覆盖默认的securityManager #securityManager=org.apache.shiro.mgt.DefaultSecurityManager
JdbcRealm 定义数据库 上面的数据源都是我们提前定义好,写死的,当然我们也可以将数据定义在数据库中,比如,我创建如下三张表,并预设一条数据: drop database if exists shiro1...,如下: jdbcRealm=org.apache.shiro.realm.jdbc.JdbcRealm dataSource=com.alibaba.druid.pool.DruidDataSource...useUnicode=true&characterEncoding=UTF-8 dataSource.username=root dataSource.password=123 jdbcRealm.dataSource...=$dataSource securityManager.realm=$jdbcRealm jdbcRealm定义了我们要用的JdbcRealm,在最后将之设置给SecurityManager的realm...属性,jdbcRealm中还有dataSource,就是我们自定义的数据源,其他的都是数据库连接的东西,我就不再赘述。
Tomcat 7中提供了六种标准Realm,用来支持与各个认证信息来源的连接: * JDBCRealm - 通过JDBC驱动来访问贮存在关系数据库里的认证信息。...** 我们知道Tomcat自带的JNDIRealm可以实现LDAP认证,JDBCRealm可以实现关系数据库认证,那么我们可不可以首先通过LDAP认证,认证通过后,到数据库中读取角色信息呢?...需求:自定义一个Realm,使得能够像JNDIRealm一样可以实现LDAP认证,又像JDBCRealm一样可以从数据库中读取我们用户的角色信息进行认证。...而JDBCRealm你可以这样声明: <Realm className="org.apache.catalina.realm.<em>JDBCRealm</em>" driverName="org.gjt.mm.mysql.Driver...配置(<em>JDBCRealm</em>配置使用) Apache Tomcat 5.5 Servlet/JSP 容器的权限管理 - 域(Realm)的设置
另外可以参考配置shiro-jdbc-passwordservice.ini,提供了JdbcRealm的测试用例,测试前请先调用sql/shiro-init-data.sql初始化用户数据。...如果使用JdbcRealm,需要修改获取用户信息(包括盐)的sql:“select password, password_salt from users where username = ?”...jdbcRealm.saltStyle=COLUMN jdbcRealm.authenticationQuery=select password, concat(username,password_salt...jdbcRealm.credentialsMatcher=$credentialsMatcher 1、saltStyle表示使用密码+盐的机制,authenticationQuery第一列是密码,...另外可以参考配置shiro-jdbc-passwordservice.ini,提供了JdbcRealm的测试用例,测试前请先调用sql/shiro-init-data.sql初始化用户数据。
driver-class-name: org.postgresql.Driver 根据 Shiro 的文档, 需要配置 Realm 和 ShiroFilterChainDefinition , Shiro 提供了内置的 JdbcRealm...设置 JdbcRealm 的 authenticationQuery 查询 aspnet_users 表中的用户信息; 设置 JdbcRealm 的 userRolesQuery 查询 aspnet_roles...表中的角色信息; 设置 JdbcRealm 的 permissionsQuery 查询 aspnet_role_claims 表中的角色权限信息; 代码如下: @Bean public Realm...realm(DataSource dataSource) { var realm = new JdbcRealm(); realm.setDataSource(dataSource);
配置文件jdbc_realm.ini,这与上文的shiro.ini是一样的; [main] jdbcRealm=org.apache.shiro.realm.jdbc.JdbcRealm dataSource...dataSource.url=jdbc:mysql://localhost:3306/db_shiro dataSource.username=root dataSource.password=123456 jdbcRealm.dataSource...=$dataSource securityManager.realms=$jdbcRealm 导入依赖 <!
-- security datasource: --> <property...在此,以org.apache.shiro.realm.jdbc.JdbcRealm为例,将用户信息存放在关系型数据库中。...在使用org.apache.shiro.realm.jdbc.JdbcRealm时,必须要在关系型数据库中存在3张表,分别是: (1)users表,存放认证用户基本信息,在该表中必须存在2个字段:username...实际上,在更加复杂的应用场景下,通常需要扩展org.apache.shiro.realm.jdbc.JdbcRealm。 4.
-- <Realm className="org.apache.catalina.realm.<em>JDBCRealm</em>" debug="99" driverName...-- <Realm className="org.apache.catalina.realm.<em>JDBCRealm</em>" debug="99" driverName...-- <Realm className="org.apache.catalina.realm.<em>JDBCRealm</em>" debug="99" driverName
dataSource.setPassword("123456"); } @Test public void testAuthentication() { JdbcRealm...jdbcRealm = new JdbcRealm(); jdbcRealm.setDataSource(dataSource); jdbcRealm.setPermissionsLookupEnabled...; jdbcRealm.setAuthenticationQuery(sql); //自定义角色查询 String roleSql = "select...; jdbcRealm.setUserRolesQuery(roleSql); //自定义权限认证 String permissionSql = "select...; jdbcRealm.setPermissionsQuery(permissionSql); //1.
领取专属 10元无门槛券
手把手带您无忧上云