package cn.com.test; import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.AuthenticationInfo; import org.apache.shiro.authc.AuthenticationToken; import org.apache.shiro.authc.IncorrectCredentialsException; import org.apache.shiro.authc.SimpleAuthenticationInfo; import org.apache.shiro.authc.UnknownAccountException; import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.realm.Realm; public class MyRealm implements Realm { /** * 判断你当前使用的Token的类型是否为指定的类型 */ public AuthenticationInfo getAuthenticationInfo(AuthenticationToken token) throws AuthenticationException { String username = (String) token.getPrincipal(); //取得用户名 //在shiro里面是利用字符数组实现了密码的传递,所以不能将其变为String String password = new String((char[]) token.getCredentials()); //取得密码 //此时直接使用一个固定的用户名和密码进行验证处理操作 if(!"admin".equals(username)){ throw new UnknownAccountException("用户名不存在!"); } if(!"hello".equals(password)){ throw new IncorrectCredentialsException("密码输入错误!") ; } return new SimpleAuthenticationInfo(username,password,this.getName()); } // 返回一个当前使用的Realm名字,这个名字可以任意返回,但是不要重名 public String getName() { return "张三好么?"; //只是一个标记 } /** * 得到用户的认证信息,根据传入的Token取得 * token 包含了要进行验证的所有数据 身份验证 * */ public boolean supports(AuthenticationToken token) { // 本次将在之前程序的基础之上继续使用UsernamePasswordToken完成信息的传递 return token instanceof UsernamePasswordToken; } } package cn.com.test; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.config.IniSecurityManagerFactory; import org.apache.shiro.subject.Subject; import org.apache.shiro.util.Factory; public class TestLoginDemo { public static void main(String[] args) { //取得Factory接口对象,主要的目的是用过配置文件加载文件之中的信息,这些信息暂时不能够成为认证信息 Factory<org.apache.shiro.mgt.SecurityManager> factroy = new IniSecurityManagerFactory("classpath:shiro.ini") ; //取得里面所保存的所有的认证数据信息 org.apache.shiro.mgt.SecurityManager securityManager = factroy.getInstance() ; //利用一个专门的认证操作的处理类,实现认证处理的具体实现 SecurityUtils.setSecurityManager(securityManager); //获取进行用户名和密码认证的接口对象 Subject subject = SecurityUtils.getSubject() ; //定义一个Token,里面保存要登录的用户和密码 UsernamePasswordToken token = new UsernamePasswordToken("mermaid","hello") ; //实现用户登录处理 subject.login(token); //取得用户名 System.out.println(subject.getPrincipal()); } } Shiro普通认证 myRealm=cn.com.realm.MyRealm # 整个Shiro中的验证处理都是由SecurityManager接口负责的 securityManager.realms=$myRealm 基于数据库 需要建立一张数据表:member 用户ID varchar(50)pk 密码 varchar(32) Shiro.ini文件 [main] dataSource=com.mysql.jdbc.jdbc2.optional.MysqlDataSource dataSource.serverName=127.0.0.1 dataSource.databaseName=shirodb dataSource.user=root dataSource.password=mysqladmin jdbcRealm=org.apache.shiro.realm.jdbc.JdbcRealm jdbcRealm.dataSource=$dataSource jdbcRealm.authenticationQuery=SELECT password FROM members WHERE mid=? securityManager.realms=$jdbcRealm
相关推荐
SpringMVC 和 Shiro 框架的整合是企业级Web开发中常见的一种安全控制解决方案。SpringMVC 是一个强大的MVC(Model-View-Controller)框架,负责处理请求、展示视图以及业务逻辑;而 Apache Shiro 则是一个轻量级的...
综上,Shiro安全框架与Spring的集成使得OA项目的安全性得到了有效保障,通过合理的配置和使用,可以轻松实现用户认证、授权、会话管理和数据加密等功能,为开发人员提供了一种简单高效的安全解决方案。
SSM+Shiro安全框架是Java Web开发中常用的安全解决方案,结合了Spring、Spring MVC(SSM)和Apache Shiro这三个强大的工具。本项目提供的代码示例旨在帮助开发者理解和实现基于SSM的权限管理和认证功能。 Spring是...
SSM(Spring、SpringMVC、MyBatis)是一个常见的Java Web开发框架组合,而Apache Shiro则是一个强大且易用的Java安全框架,负责处理认证、授权、加密和会话管理等安全相关任务。本项目是关于如何在SSM项目中集成...
2. 配置Shiro:创建Shiro配置文件,如shiro.ini或shiro.xml,配置 Realm(认证和授权信息源)、过滤器链等。 3. 创建Realm:自定义Realm实现认证和授权,与SSM中的数据源进行交互,获取用户信息。 4. 集成Spring:将...
5. **缓存配置**:在大型系统中,为了提高性能,Shiro可以利用缓存来存储用户的认证和授权信息。这通常涉及到与Redis、Memcached等缓存系统的集成,以减少数据库的访问次数。 6. **Spring整合**:Shiro可以很好地与...
1. **配置Shiro**:在SpringBoot应用中引入Shiro依赖,然后配置Shiro Realm,实现用户认证和授权逻辑。Realm是Shiro与应用中的用户数据源交互的接口,你可以自定义 Realm 类以连接数据库或其他用户存储。 2. **编写...
- 配置Shiro:编写`shiro.ini`或在Spring配置文件中配置Shiro的相关设置,如 Realm(认证/授权信息源)、过滤器链等。 - 创建自定义Realm:实现`AuthorizingRealm`接口,覆盖`doGetAuthenticationInfo`和`...
Apache Shiro 是一个强大且易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可以非常轻松地开发出足够安全的应用。在这个"Shiro从入门到集群搭建"的学习资料中,我们将深入理解Shiro的核心概念,并逐步...
Apache Shiro 是一个强大且易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可以非常轻松地开发出足够安全的应用。在"shiro_attack_2.2.zip"这个压缩包中,我们可以推测它可能包含了关于Apache Shiro的...
比如,Shiro可以通过自定义Realm实现,针对每个表创建一个Realm,每个Realm处理特定表中的用户认证。 4. **集成OAuth2和Shiro**:一旦用户通过Shiro认证,OAuth2的授权服务器会接收到认证成功的信息,然后生成一个...
在Java Web开发领域,SpringBoot以其简洁的配置、快速的启动和丰富的生态,已经成为主流的开发框架。而Shiro作为一款强大的安全管理框架,能够提供用户认证、授权、会话管理和加密等功能,与SpringBoot结合可以构建...
Apache Shiro 是一个强大且易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可以非常轻松地开发出足够安全的应用。Shiro 不仅可以用于Web 应用,还可以用于独立的Java应用,是Java 安全领域的一个重要...
2. ** Realm创建**:Realm是Shiro与应用程序数据源交互的桥梁,你需要创建自定义的Realm类,实现获取用户信息、权限信息的方法,并将其绑定到Shiro的安全管理器。 3. **Spring Bean注入**:将Shiro的相关组件(如...
Apache Shiro 是一个强大且易用的 Java 安全框架,提供身份认证、授权、加密以及会话管理功能,简化了企业级应用的安全实施。在本压缩包中,你将找到 Shiro 的所有核心组件和相关依赖的 jar 包,它们都是最新版本,...
4. **Apache Shiro**:Shiro是一个强大的Java安全框架,它提供了认证、授权、加密和会话管理功能,可以非常容易地开发出足够安全的应用。在这个场景中,Shiro主要负责用户的身份验证、权限控制和会话管理。 5. **单...
Apache Shiro 是一个强大且易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可以非常轻松地开发出足够安全的应用。Shiro 可以被用于任何Java应用——从移动应用到Web应用以及企业级应用。在本压缩包中,...
SpringMVC是Spring框架的一部分,是一个模型-视图-控制器(MVC)架构的Web应用开发模型。它允许开发者将业务逻辑与表现层分离,提供松散耦合的组件。SpringMVC通过DispatcherServlet处理请求,使用处理器映射器找到...
而Apache Shiro是一款强大的安全管理框架,提供认证、授权、会话管理和加密等功能,广泛应用于Java应用的安全控制。 **Shiro 框架的核心概念:** 1. **认证(Authentication)**:验证用户身份的过程,即确认用户...
3. `SecurityContextHolder`:安全上下文,存储当前用户的认证信息。 而在`springboot-shiro`项目中,关键组件可能包括: 1. `ShiroConfig`:Shiro的配置类,定义 Realm(域)来处理认证和授权。 2. `Realm`:...