`

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 (),重写获取用户信息的方法。

Java代码 复制代码 收藏代码
  1. protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authcToken) throws AuthenticationException {  
  2.         UsernamePasswordToken token = (UsernamePasswordToken) authcToken;  
  3.         User user = accountManager.findUserByUserName(token.getUsername());  
  4.         if (user != null) {  
  5.             return new SimpleAuthenticationInfo(user.getUserName(), user.getPassword(), getName());  
  6.         } else {  
  7.             return null;  
  8.         }  
  9. }  
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()方法,重写获取用户权限的方法即可。

Java代码 复制代码 收藏代码
  1. protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {  
  2.         String userName = (String) principals.fromRealm(getName()).iterator().next();  
  3.         User user = accountManager.findUserByUserName(userName);  
  4.         if (user != null) {  
  5.             SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();  
  6.             for (Group group : user.getGroupList()) {  
  7.                 info.addStringPermissions(group.getPermissionList());  
  8.             }  
  9.             return info;  
  10.         } else {  
  11.             return null;  
  12.         }  
  13. }  
分享到:
评论

相关推荐

    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