当前位置:  操作系统/服务器>linux

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

    来源: 互联网  发布时间:2014-08-25

    本文导语:  在认证、授权内部实现机制中都有提到,最终处理都将交给Real进行处理。因为在Shiro中,最终是通过Realm来获取应用程序中的用户、角色及权限信息的。通常情况下,在Realm中会直接从我们的数据源中获取Shiro需要的验证信息。...

在认证、授权内部实现机制中都有提到,最终处理都将交给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;
  }
}

    
 
 

您可能感兴趣的文章:

  • Apache Shiro 使用手册(一) Shiro架构介绍
  • Apache Shiro 使用手册(二) Shiro 认证
  • Apache Shiro 使用手册(五) Shiro 配置说明
  • Apache Shiro 使用手册(三) Shiro授权
  • 急!Ubuntu10.04 apache2和tomcat6 mod_jk 整合 实现apache2的代理问题
  • 如何用RedHat 9.0自带的Apache在局域网内实现文件共享?
  • 如何在APACHE环境下实现下载限制为单线程!
  • Java的JAXR实现 Apache Scout
  • oauth2.0的java参考实现 Apache Amber
  • SCXML的Java实现 Apache Commons SCXML
  • 救救我~!如何在linux平台下实现最简单的apache安装?
  • apache配置php实现单一入口方法
  • 要用apache的xalan来实现xml的转换,需要装哪些东西?
  • 实现 OData 的 Java 库 Apache Olingo
  • JSR 326 参考实现 Apache Kato
  • apache使用.htaccess文件实现屏蔽wget下载网站内容
  • apache rewrite规则实现白名单
  • 有这样一个c++servlet环境,但只有linux下的实现,我想移植到windows下,有哪位熟悉apache,和linux,window编程的大哥指点一下
  • 基于Apache Nutch和Htmlunit的扩展实现AJAX页面爬虫抓取解析插件 nutch-htmlunit
  • apache中使用mod_gnutls模块实现多个SSL站点配置(多个HTTPS协议的虚拟主机)
  • thinkphp路由规则使用示例详解和伪静态功能实现(apache重写)
  • jquery uploadify和apache Fileupload实现异步上传文件示例
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请问TOMCAT和APACHE怎样结合使用呢?就像PHP和APACHE结合使用一样?
  • 急!哪位朋友在aix系统下配置过apache+tomcat ? 它所使用的apache+tomcat程序,是否可以用在linux下的程序是一样的 ? 在哪儿可以下载
  • 为什么tomcat要与Apache结合使用?
  • apache和tomcat是什么关系,它们为什么要结合使用?
  • 关于在apache下面使用其他so函数库的问题?
  • apache安装中使用的库问题
  • 能让Apache和Tomcat同时使用一个端口吗(80)?
  • 一个虚拟主机使用多个域名的配置方法(apache)该怎么写?
  • 请教各位:只安装TOMCAT而不搭配apache一起使用,在性能上有什么差别
  • linux系统使用python监控apache服务器进程脚本分享
  • 哪位有apache与tomcat结合使用的相关配置文档?请告诉小弟,只要是有用的,通统给分!
  • 何处可以找到Apache和Sendmail使用方面的资料
  • linux下使用apache建服务器
  • 如何使用http下载文件,得到服务器的类型(IIS、apache)最好是多线程的,谢谢
  • linux9 下 使用系统自带的 apache做HTTP服务 httpd进程正常启动 别的机器无法访问
  • 为什么apache里已经设置了httpd使用默认端口80,却并没打开80端口呢?
  • 关于Apache 1.3和Tomcat 4.01结合使用的问题,搞不定了,请帮帮忙!
  • 请gutsyu(SL55AMG)看一下主题为"tomcat4.0.3和apache1.3.23是否需要配置一下才能使用"的贴子。
  • linux使用tar.gz源码包安装 apache 和 mysql 目录问题
  • 哪位成功配置了apache+php+mysql, 你们各使用的是什么版本?
  • Apache如何启用gzip压缩
  • 想用APACHE做WEBSERVER,但不会用APACHE,请教。
  • Apache Hadoop 项目主页及介绍
  • apache日志文件总是空的,重起apache也没用。
  • 修改配置真正解决php文件上传大小限制问题(apache+php)
  • 安装完apache测试主页发现用的是系统自带的apache,该怎么办?
  • Apache hadoop当前各个版本说明
  • SUN OS5.8怎么没有make ,我想装APACHE2.0不知道怎么下手,原来的APACHE1.3有不知道怎么卸载
  • Windows下php 5.3.5和apache2安装配置及测试
  • 假设现在需要从网上下载的压缩包apache2,如何以dso模式安装在/home 目录的apache目录中,写出完整命令
  • Apache HTTP服务器2.4中的新功能概览


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3