`

shiro开发框架,固定信息Realm认证

阅读更多
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框架

    SpringMVC 和 Shiro 框架的整合是企业级Web开发中常见的一种安全控制解决方案。SpringMVC 是一个强大的MVC(Model-View-Controller)框架,负责处理请求、展示视图以及业务逻辑;而 Apache Shiro 则是一个轻量级的...

    shiro安全框架

    综上,Shiro安全框架与Spring的集成使得OA项目的安全性得到了有效保障,通过合理的配置和使用,可以轻松实现用户认证、授权、会话管理和数据加密等功能,为开发人员提供了一种简单高效的安全解决方案。

    SSM+Shiro安全框架代码

    SSM+Shiro安全框架是Java Web开发中常用的安全解决方案,结合了Spring、Spring MVC(SSM)和Apache Shiro这三个强大的工具。本项目提供的代码示例旨在帮助开发者理解和实现基于SSM的权限管理和认证功能。 Spring是...

    ssm对shiro框架的整合

    SSM(Spring、SpringMVC、MyBatis)是一个常见的Java Web开发框架组合,而Apache Shiro则是一个强大且易用的Java安全框架,负责处理认证、授权、加密和会话管理等安全相关任务。本项目是关于如何在SSM项目中集成...

    SSM整合shiro的简单框架搭建,JSP项目

    2. 配置Shiro:创建Shiro配置文件,如shiro.ini或shiro.xml,配置 Realm(认证和授权信息源)、过滤器链等。 3. 创建Realm:自定义Realm实现认证和授权,与SSM中的数据源进行交互,获取用户信息。 4. 集成Spring:将...

    shiro框架整合(全包)

    5. **缓存配置**:在大型系统中,为了提高性能,Shiro可以利用缓存来存储用户的认证和授权信息。这通常涉及到与Redis、Memcached等缓存系统的集成,以减少数据库的访问次数。 6. **Spring整合**:Shiro可以很好地与...

    SpringBoot + Shiro实现前后端全分离接口安全框架

    1. **配置Shiro**:在SpringBoot应用中引入Shiro依赖,然后配置Shiro Realm,实现用户认证和授权逻辑。Realm是Shiro与应用中的用户数据源交互的接口,你可以自定义 Realm 类以连接数据库或其他用户存储。 2. **编写...

    shiro所需的全部jar包

    - 配置Shiro:编写`shiro.ini`或在Spring配置文件中配置Shiro的相关设置,如 Realm(认证/授权信息源)、过滤器链等。 - 创建自定义Realm:实现`AuthorizingRealm`接口,覆盖`doGetAuthenticationInfo`和`...

    Shiro从入门到集群搭建

    Apache Shiro 是一个强大且易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可以非常轻松地开发出足够安全的应用。在这个"Shiro从入门到集群搭建"的学习资料中,我们将深入理解Shiro的核心概念,并逐步...

    shiro_attack_2.2.zip

    Apache Shiro 是一个强大且易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可以非常轻松地开发出足够安全的应用。在"shiro_attack_2.2.zip"这个压缩包中,我们可以推测它可能包含了关于Apache Shiro的...

    oauth2 shiro 多表认证

    比如,Shiro可以通过自定义Realm实现,针对每个表创建一个Realm,每个Realm处理特定表中的用户认证。 4. **集成OAuth2和Shiro**:一旦用户通过Shiro认证,OAuth2的授权服务器会接收到认证成功的信息,然后生成一个...

    springboot-08-shiro.zip

    在Java Web开发领域,SpringBoot以其简洁的配置、快速的启动和丰富的生态,已经成为主流的开发框架。而Shiro作为一款强大的安全管理框架,能够提供用户认证、授权、会话管理和加密等功能,与SpringBoot结合可以构建...

    shiro核心资料笔记

    Apache Shiro 是一个强大且易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可以非常轻松地开发出足够安全的应用。Shiro 不仅可以用于Web 应用,还可以用于独立的Java应用,是Java 安全领域的一个重要...

    我的shiro源码.zip

    2. ** Realm创建**:Realm是Shiro与应用程序数据源交互的桥梁,你需要创建自定义的Realm类,实现获取用户信息、权限信息的方法,并将其绑定到Shiro的安全管理器。 3. **Spring Bean注入**:将Shiro的相关组件(如...

    shiro 所有的jar包

    Apache Shiro 是一个强大且易用的 Java 安全框架,提供身份认证、授权、加密以及会话管理功能,简化了企业级应用的安全实施。在本压缩包中,你将找到 Shiro 的所有核心组件和相关依赖的 jar 包,它们都是最新版本,...

    ssm+shiro+redis整合认证权限实现单点登陆仅供开发者参考使用.7z

    4. **Apache Shiro**:Shiro是一个强大的Java安全框架,它提供了认证、授权、加密和会话管理功能,可以非常容易地开发出足够安全的应用。在这个场景中,Shiro主要负责用户的身份验证、权限控制和会话管理。 5. **单...

    shiro.zip下载

    Apache Shiro 是一个强大且易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可以非常轻松地开发出足够安全的应用。Shiro 可以被用于任何Java应用——从移动应用到Web应用以及企业级应用。在本压缩包中,...

    shiro+springmvc权限管理

    SpringMVC是Spring框架的一部分,是一个模型-视图-控制器(MVC)架构的Web应用开发模型。它允许开发者将业务逻辑与表现层分离,提供松散耦合的组件。SpringMVC通过DispatcherServlet处理请求,使用处理器映射器找到...

    jsp+数据库+shiro 源码及文档

    而Apache Shiro是一款强大的安全管理框架,提供认证、授权、会话管理和加密等功能,广泛应用于Java应用的安全控制。 **Shiro 框架的核心概念:** 1. **认证(Authentication)**:验证用户身份的过程,即确认用户...

    Java 安全框架-security+shiro-源码

    3. `SecurityContextHolder`:安全上下文,存储当前用户的认证信息。 而在`springboot-shiro`项目中,关键组件可能包括: 1. `ShiroConfig`:Shiro的配置类,定义 Realm(域)来处理认证和授权。 2. `Realm`:...

Global site tag (gtag.js) - Google Analytics