shiro之 JdbcRealm及Authentication Strategy

1. 使用shiro框架来完成认证工作,默认情况下使用的是lniRealm。如果需要使用其他Realm,那么需要进行相关的配置。

2.lni 配置文件讲解:[main]section是你配置应用程序的SecurityManager实例及任何它的依赖组件(如:Realms)的地方。

[main]
myRealm=cn.sxt.realm.MyRealm
#依赖注入
securityManager.realm=$myRealm

[users]section 允许你定义一组静态的用户账户。这在大部分拥有少数用户账户或用户账户不需要在运行时被动态地创建的环境下是很有用的。

[users]
Zhangsan=1111
Lisi=2222,role1,role2

[roles]section允许你把定义在[users]section中的角色与权限关联起来。另外,这在大部分拥有少数用户账户或用户账户不需要在运行时被动态地创建的环境下是很有用的。

[users]
zhangsan=1111,role1
[roles]
role1=user:add,user:delete

3. 使用JdbcRealm来完成身份认证。

通过观察JdbcRealm可知,要实现JdbcReaml:

a) 需要为jdbcRealm设置dataSource

b) 在指定的dataSource所对应的数据库中应用户表users,该表中有username,password,password_salt等字段。

实现步骤:

a)新建数据库表:

b) 配置 shiro.ini 文件:

[main]
#配置数据源
dataSource=com.mchange.v2.c3p0.ComboPooledDataSource
dataSource.driverClass=com.mysql.jdbc.Driver
dataSource.jdbcUrl=jdbc:mysql://localhost:3306/shiro
dataSource.user=root
dataSource.password=1111
jdbcRealm=org.apache.shiro.realm.jdbc.JdbcRealm
#$表示引用对象
jdbcRealm.dataSource=$dataSource
securityManager.realm=$jdbcRealm

c) 猜测

public static void main(String[] args) {
        Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
        SecurityManager securityManager=factory.getInstance();
        SecurityUtils.setSecurityManager(securityManager);
        Subject subject = SecurityUtils.getSubject();
        UsernamePasswordToken token = new UsernamePasswordToken("wangwu", "1111");
        try {
            subject.login(token);
            if(subject.isAuthenticated()){
                System.out.println("验证通过");
            }
        } catch (AuthenticationException e) {
            System.out.println("验证失败");
        }
    }

5.  Authentication Strategy:认证策略,在shiro中有3种认证策略;

  a)AtLeastOneSuccessfulStrategy:如果一个(或更多)Realm 验证成功,则整体的尝试    被认为是成功的。如果没有一个验证成功,则整体尝试失败。

  b)FirstSuccessfulStrategy:只要有一个成功地验证的Realm返回的信息将被使用。所有进    一步的Realm 将被忽略。如果没有一个验证成功,则整体尝试失败。

  c)AllSucessfulStrategy:为了整体的尝试成功,所有配置的Realm 必须验证成功。如果没    一个验证成功,则整体尝试失败。

  默认的策略是:AtLeastOneSuccessfulStrategy

6. 设置认证策略:

#验证策略设置
authenticationStrategy=org.apache.shiro.authc.pam.FirstSuccessfulStrategy
securityManager.authenticator.authenticationStrategy=$authenticationStrategy
时间: 2024-10-19 03:27:34

shiro之 JdbcRealm及Authentication Strategy的相关文章

从零到实现Shiro中Authorization和Authentication的缓存

本文大纲 一.简介 二.缓存的概念 三.自定义实现缓存机制 四.什么是Ehcache 五.Ehcache怎么用 六.Spring对缓存的支持 七.Spring+Ehcache实现 八.Spring+Shiro+Ehcache实现 九.总结 一.简介 在项目中,用到Shiro来做验证授权的控制.但在实际使用的时候,发现用户每访问一个功能,都会重新到UserRealm中获取一次权限.这样子会花费大量的系统系统.此时就想到了使用缓存,查了一下,Shiro也确实支持Authorization和Authe

shiro中JdbcRealm使用salt的问题

  JdbcRealm中创建用户的一般写法: public String register(User user) { RandomNumberGenerator gen = new SecureRandomNumberGenerator(); ByteSource salt = gen.nextBytes(); String hashedPasswordBase64 = new Sha256Hash(user.getPassword(), salt, 1024).toBase64(); user

Shiro权限框架简介

http://blog.csdn.net/xiaoxian8023/article/details/17892041 Shiro权限框架简介 2014-01-05 23:51 3111人阅读 评论(37) 收藏 举报  分类: [java框架](25)  版权声明:本文为博主原创文章,未经博主允许不得转载.如需转载请声明:[转自 http://blog.csdn.net/xiaoxian8023 ] 目录(?)[+] 最近加入了gxpt项目组,被安排做权限模块,所以也有幸第一次接触到了Shiro

SpringMVC整合Shiro——(3)

SpringMVC整合Shiro,Shiro是一个强大易用的Java安全框架,提供了认证.授权.加密和会话管理等功能. 第一步:配置web.xml <!-- 配置Shiro过滤器,先让Shiro过滤系统接收到的请求 --> <!-- 这里filter-name必须对应applicationContext.xml中定义的<bean id="shiroFilter"/> --> <!-- 使用[/*]匹配所有请求,保证所有的可控请求都经过Shiro

Shiro的学习

Apache Shiro 是 Java 的一个安全(权限)框架.它可以非常容易的开发出足够好的应用,其不仅可以用在 JavaSE 环境,也可以用在 JavaEE 环境 . Shiro 可以完成:认证.授权.加密.会话管理.与Web 集成.缓存 等.下载:http://shiro.apache.org/  或  https://github.com/apache/shiro 功能介绍 Shiro目标:Shiro开发团队所称的“应用程序安全”的四个基石——身份验证.授权.会话管理和密码 Authen

跟我学Shiro实践-简单的认证授权

本文是基于张开涛老师的跟我学Shiro系列的个人实践.几个月前过了一遍张开涛的跟我学Shiro系列,因为没有实践,基本上又全部还给开涛老师了.趁着假期,这次准备将开涛老师的讲解实践一遍.当然本人的实践不会与开涛的实例完全相同,不然就没必要在写一遍了. 本文只会对相关必要的Shiro概念说明下,建议有时间可以阅读下开涛的Shiro系列:http://jinnianshilongnian.iteye.com/blog/2018398 Shiro的架构和简单的认证授权 1.1 Shiro架构和组件介绍

Spring shiro学习(一)

先转一下开涛大神的shiro基础,讲的很好 1.1  简介 Apache Shiro是Java的一个安全框架.目前,使用Apache Shiro的人越来越多,因为它相当简单,对比Spring Security,可能没有Spring Security做的功能强大,但是在实际工作时可能并不需要那么复杂的东西,所以使用小而简单的Shiro就足够了.对于它俩到底哪个好,这个不必纠结,能更简单的解决项目问题就好了. 本教程只介绍基本的Shiro使用,不会过多分析源码等,重在使用. Shiro可以非常容易的

第1章 Shiro简介

1.1  简介 Apache Shiro是Java的一个安全框架.目前,使用Apache Shiro的人越来越多,因为它相当简单,对比Spring Security,可能没有Spring Security做的功能强大,但是在实际工作时可能并不需要那么复杂的东西,所以使用小而简单的Shiro就足够了.对于它俩到底哪个好,这个不必纠结,能更简单的解决项目问题就好了.本教程只介绍基本的Shiro使用,不会过多分析源码等,重在使用.Shiro可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE环

(一)Shiro笔记——简介、 架构分析

1. Shiro是什么 Apache Shiro是一个强大灵活的开源安全框架,可以完全处理身份验证,授权,企业会话管理和加密. Apache Shiro的首要目标是易于使用和理解. 安全有时可能非常复杂,甚至痛苦,但使用Shiro后就不一定是这样了. 框架应该在可能的情况下掩盖复杂性,并展示一个干净,直观的API,这简化了开发人员工作,并使应用程序更安全. 这里有一些可以使用Apache Shiro完全的应用场景: 验证用户以及验证其身份. 对用户执行访问控制,例如:在任何环境中使用会话API,