`
kdboy
  • 浏览: 761395 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Apache Shiro 使用手册(四)Realm 实现

阅读更多
在认证、授权内部实现机制中都有提到,最终处理都将交给Real进行处理。因为在Shiro中,最终是通过Realm来获取应用程序中的用户、角色及权限信息的。通常情况下,在Realm中会直接从我们的数据源中获取Shiro需要的验证信息。可以说,Realm是专用于安全框架的DAO.

一、认证实现
正如前文所提到的,Shiro的认证过程最终会交由Realm执行,这时会调用Realm的getAuthenticationInfo(token)方法。
该方法主要执行以下操作:
1、检查提交的进行认证的令牌信息
2、根据令牌信息从数据源(通常为数据库)中获取用户信息
3、对用户信息进行匹配验证。
4、验证通过将返回一个封装了用户信息的AuthenticationInfo实例。
5、验证失败则抛出AuthenticationException异常信息。

而在我们的应用程序中要做的就是自定义一个Realm类,继承AuthorizingRealm抽象类,重载doGetAuthenticationInfo (),重写获取用户信息的方法。
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authcToken) throws AuthenticationException {
		UsernamePasswordToken token = (UsernamePasswordToken) authcToken;
		User user = accountManager.findUserByUserName(token.getUsername());
		if (user != null) {
			return new SimpleAuthenticationInfo(user.getUserName(), user.getPassword(), getName());
		} else {
			return null;
		}
}

二、授权实现
而授权实现则与认证实现非常相似,在我们自定义的Realm中,重载doGetAuthorizationInfo()方法,重写获取用户权限的方法即可。
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
		String userName = (String) principals.fromRealm(getName()).iterator().next();
		User user = accountManager.findUserByUserName(userName);
		if (user != null) {
			SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
			for (Group group : user.getGroupList()) {
				info.addStringPermissions(group.getPermissionList());
			}
			return info;
		} else {
			return null;
		}
}
25
3
分享到:
评论
6 楼 RebeccaZhong 2016-04-26  
实现多个realm时,能不能让程序在运行时指定只走一个realm,现在我配置了多个,结果两个realm都走了
5 楼 jayyunfei 2014-10-08  
cnaaaa 写道
大吓: 我情况是这样的

@Autowired(required = true)
private UserMapper userMapper;

/**
* 认证回调函数, 登录时调用.
*/
@Override
protected AuthenticationInfo doGetAuthenticationInfo(
AuthenticationToken authcToken) throws AuthenticationException {
UsernamePasswordToken token = (UsernamePasswordToken) authcToken;


User user = userMapper.findUserByLoginName(token.getUsername());

其中 的 userMapper是用mybatis生成的userMapper

但在doGetAuthenticationInfo引用 的时候 为null 在其他控制器里是正常的,是什么问题???

有没有注入,在配置文件中,这个shiro应该有个配置文件的,你把这个usermapper注入到你重写的类中在配置文件中配置,应该就可以了。
4 楼 cnaaaa 2014-09-30  
大吓: 我情况是这样的

@Autowired(required = true)
private UserMapper userMapper;

/**
* 认证回调函数, 登录时调用.
*/
@Override
protected AuthenticationInfo doGetAuthenticationInfo(
AuthenticationToken authcToken) throws AuthenticationException {
UsernamePasswordToken token = (UsernamePasswordToken) authcToken;


User user = userMapper.findUserByLoginName(token.getUsername());

其中 的 userMapper是用mybatis生成的userMapper

但在doGetAuthenticationInfo引用 的时候 为null 在其他控制器里是正常的,是什么问题???
3 楼 jayyunfei 2013-12-13  
我是改变 写道
在applicationContext-shiro.xml:
<!-- 項目自定义的Realm, 所有accountService依赖的dao都需要用depends-on声明 -->
<bean id="shiroDbRealm" class="com.inmabeidou.inma.service.account.ShiroDbRealm" depends-on="userDao, uscaDao">
<property name="userService" ref="userService"/>
</bean>

谢谢,虽然问题已经解决,还是谢谢。
2 楼 我是改变 2013-12-11  
在applicationContext-shiro.xml:
<!-- 項目自定义的Realm, 所有accountService依赖的dao都需要用depends-on声明 -->
<bean id="shiroDbRealm" class="com.inmabeidou.inma.service.account.ShiroDbRealm" depends-on="userDao, uscaDao">
<property name="userService" ref="userService"/>
</bean>
1 楼 jayyunfei 2013-07-05  
请教一个问题:
我在重写这个doGetAuthenticationInfo方法的时候我把userServiceImpl注入了自定的Realm类为什么调用不了其中的方法,总是不能执行,但是这些方法在其他类中就能执行。

相关推荐

    Apache_Shiro_使用手册(四)Realm_实现

    ### Apache Shiro 使用手册(四):Realm 实现 #### 一、引言 Apache Shiro 是一个强大且易用的 Java 安全框架,它提供了认证、授权、加密和会话管理等功能,并且可以非常容易地开发出足够安全的应用。在 Shiro 的...

    Apache Shiro中文版使用手册

    ### Apache Shiro 使用手册知识点详解 #### 一、Apache Shiro 概述 **1.1 什么是 Apache Shiro** Apache Shiro 是一款强大的 Java 安全框架,它集成了认证、授权、加密和会话管理等功能。这些功能使得 Shiro 成为...

    Apache Shiro使用手册 共22页.pdf

    Apache Shiro 使用手册 Apache Shiro 是一个强大易用的 Java 安全框架,提供了认证、授权、加密和会话管理等功能。Shiro 的架构主要包括三个核心组件:Subject、SecurityManager 和 Realm。 1. 认证...

    Apache_Shiro_使用手册(一)Shiro架构介绍

    ### Apache Shiro 使用手册(一)Shiro架构介绍 #### 一、Shiro简介 Apache Shiro 是一款功能强大且易于使用的 Java 安全框架,它提供了多种安全相关的功能和服务,包括但不限于认证、授权、加密和会话管理。相较...

    Apache_Shiro参考手册中文版_shiro_

    通过阅读《Apache Shiro参考手册中文版》PDF,你可以深入了解每个功能的详细用法,包括如何配置Shiro,如何创建自定义的 Realm,以及如何在代码中使用Subject、Session和Cache等核心概念。手册还会涵盖实际案例和...

    Apache Shiro 中文手册

    通过阅读"Apache Shiro 中文手册",你将能够全面了解Shiro的工作原理,学习如何在项目中配置和使用它,从而提高你的应用安全性,并实现高效的身份验证和授权机制。无论是初学者还是有经验的开发者,这都是一个宝贵的...

    Apache Shiro 使用手册

    Shiro核心组件Aplication,Subject,SecurityManager, Realm, Authenticator, Authorizer. 介绍了Shiro认证,授权的实现及其机制原理。给了具体操作步骤及代码。

    Apache_Shiro_使用手册.docx

    4. **验证实体和凭据**:Shiro 使用 Realm 从数据源中获取相关信息并进行比较。 5. **成功认证后设置会话**:如果认证成功,Subject 将进入已认证状态,同时可选地启用“记住我”功能。 Shiro 的优势在于其灵活性和...

    Apache_Shiro_使用手册

    它旨在简化应用程序的安全实现,对比其他如 Spring Security 的框架,Shiro 更加易于理解和使用。 **认证过程**: 在 Shiro 中,认证是指确认用户身份的过程。用户需要提供实体信息(Principals)和凭据信息...

    Apache-shiro使用手册

    ### Apache Shiro 使用手册知识点详解 #### 一、Shiro简介 - **定义**:Apache Shiro 是一款强大且易于使用的 Java 安全框架,它提供了包括认证、授权、密码加密和会话管理在内的多种安全服务功能。 - **特点**: ...

    Apache Shiro 使用手册(二) Shiro 认证

    一、Shiro认证过程 1、收集实体/凭据信息 代码如下://Example using most common scenario of username/password pair:UsernamePasswordToken token = new UsernamePasswordToken(username, password);//”...

    Apache Shiro 使用手册(四) Realm 实现

    Apache Shiro 是一个强大且易用的Java安全框架,它提供了认证、授权、加密和会话管理功能,简化了企业级应用的安全实现。在Shiro的架构中,`Realm` 是一个至关重要的组件,它是Shiro与应用程序特定安全数据源(如...

    Apache Shiro 开发使用手册

    Apache Shiro 是一个轻量级且易于使用的 Java 安全框架,它专注于提供认证、授权、加密和会话管理功能,适用于多种类型的Java应用程序。Shiro 的设计目标是简化安全管理的实现,使得开发者能更专注于业务逻辑,而...

    Apache_Shiro_使用手册中文版

    Shiro是Apache软件基金会的顶级项目之一,它支持多种安全数据源,例如LDAP、关系型数据库、INI文件等,并且可以通过自定义Realm来实现对特定数据源的支持。在SpringRain项目中,Shiro被用于实现权限控制功能。 在...

    Apache_Shiro&参考手册中文版&-converted.zip

    这个"Apache_Shiro参考手册中文版-converted.zip"文件包含了一个转换后的中文版Apache Shiro参考手册,方便中国开发者学习和理解Shiro的使用方法。 **一、认证(Authentication)** 在Shiro中,认证是指验证用户...

    Apache Shiro 1.2.x 参考手册1

    Apache Shiro 是一个强大...这个参考手册还包括术语索引、其他教程和资源,帮助开发者深入理解和使用 Apache Shiro,确保应用程序的安全性和可靠性。无论是初学者还是经验丰富的开发者,都可以从这个详尽的手册中获益。

    中文版参考手册Shiro_API.rar

    本资源提供的是Apache Shiro的中文参考手册,对于正在学习或使用Shiro的开发者来说,是十分实用的参考资料。 Shiro的核心组件包括: 1. **认证(Authentication)**:验证用户身份的过程,确保登录的用户是他们声称...

    Apache Shiro 使用手册(五) Shiro 配置说明

    ### Apache Shiro 配置说明详解 #### 一、引言 Apache Shiro 是一个强大且易用的 Java 安全框架,它提供了认证、授权、加密和会话管理等功能,能够帮助开发者轻松地处理非常复杂的安全问题。本文将重点介绍 Shiro ...

Global site tag (gtag.js) - Google Analytics