javase和javaweb环境下shiro的搭建

shiro-1

javase环境下搭建shiro
         1.导入jar包
          2.配置文件:存储临时文件
                 shiro.ini文件:存储数据,用户名,密码,角色,权限
          3.代码
               // 1.获取安全管理器
        Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
        SecurityManager securityManager = factory.getInstance();
        // 2.设置安全管理器
        SecurityUtils.setSecurityManager(securityManager);
        // 3.获取subject对象,即要登录的对象
        Subject subject = SecurityUtils.getSubject();
spring与shiro集成
             1.导入jar包
              2.搭建好spring,springmvc
              3.搭建shiro环境
                    1.web.xml
                                     <filter>
                                   <filter-name>shiroFilter</filter-name>
                                  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
                                   <init-param>
                                  <param-name>targetFilterLifecycle</param-name>
                                  <param-value>true</param-value>
                                </init-param>
                                   </filter>
                                   <filter-mapping>
                                      <filter-name>shiroFilter</filter-name>
                                      <url-pattern>/*</url-pattern>
                                   </filter-mapping>

                 2.在spring.xml中进行相关配置

shiro配置的核心:spring.xml欧中配置的一个bean<bean class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"></bean>

web.xml中DelegatingFilterProxy作用:入口,完成servlet容器到ioc容器的关联,到spring容器中找filter-name相同名字的bean实例
如果没有配置targetBeanName属性,则filter-name必须与bean的name相同

表单提交的数据封装到 usernamePasswordToken 数据库查询到的数据封装到SimpleAuthenticationInfo

加密:MD5, SHA1
1.存储数据时需要将用户输入的明文继续加密(Hibernate当中涉及md5加密)  (Ream.java)
                        //将存入数据库的密码进行MD5加密
            SimpleHash sh = new SimpleHash("md5", credentials, null, 2019);
2.前端用户输入的值,进行加密,string字符串经过md5加密(spring.xml)
                      <!-- 将前端的输入的密码进行md5的加密 -->
              <property name="credentialsMatcher">
              <bean
                class="org.apache.shiro.authc.credential.HashedCredentialsMatcher">
                <property name="hashAlgorithmName" value="md5"></property>
                <property name="hashIterations" value="2019"></property>
              </bean>
             </property>
盐值加密:原有加密的基础上加密(两个相同密码在数据库存储的值还是不一样)
        1.前端token当中获取的密码应该进行盐值加密
              ByteSource salt = ByteSource.Util.bytes(principal);
              new SimpleAuthenticationInfo(principal, sh, salt, realmName);
        2.数据库中的值进行盐值加密
               new SimpleHash("md5", credentials, salt, 2019);
多Realm获取数据:将一个密码存放在多个数据库中,建立多个Realm,并且每个realm使用不同的加密方式,在subject.login中会进行多个realm的调用,执行多次验证,提高数据安全性
         1.第一种方法:
            <!-- 多个realm -->
        <property name="realms">
            <list>
                <ref bean="jdbcRealm" />
                <ref bean="jdbcRealm1" />
            </list>
        </property>
           2.第二种方法:通过ModularRealmAuthenticator认证器

shiro认证策略:多个realm访问多个数据库,如何判断是否登录成功
  1.FirstSucessfulStrategy    第一个realm认证成功就算成功
  2.AtLeastOneSuccessfulStrategy 多个realm认证时,一个成功代表成功(默认)
  3.AllSuccessfulStrategy 多个realm认证时,全部成功才代表成功

授权:控制哪一个用户可以访问哪一个web资源
     1.编程式
         if(subect.hasRole){
                  //有权限
        }else{
                 //没有权限
         }
     2.注解式:通过在执行的java方法上注解
          @RequireRoles("admin")
          public void hello(){
             //有权限
          }
     3.jsp/gsp标签
    <shiro:hasRole name="admin">有权限</shiro:hasRole>
1.在FilterChainDefinitions中定义web资源对应角色
      web资源=roles[角色名称]
       /admin.jsp=roles[admin]
2.一个用户进行登录认证成功之后,之中还是要查找认证成功的角色拥有什么角色.realm可以和数据库交互,获取指定认证成功的用户对应的角色
        1.我们可以自定义一个Realm,继承AuthorizingRealm,认证和授权
        2.在ioc容器配置指定的Realm的bean实例(授权器)
        3.告知securityManager使用哪一个授权管理器

参考视频:点击我

原文地址:https://www.cnblogs.com/wantao/p/10596277.html

时间: 2024-08-03 16:44:07

javase和javaweb环境下shiro的搭建的相关文章

(1)Jenkins Linux环境下的简单搭建

(1)Jenkins Linux环境下的简单搭建 Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能. ----百度百科 这是一款基于Java开发的工具.种种原因,最近刚开始接触,决定研究一下.Jenkins的搭建方法不止一种,一下就是个人总结的其中一种,文章内容比较浅显,不足之处,欢迎指正. 首先,所需要准备的工具JDK.Maven.资料上显示JDK版本最好高于1.7,并没有研究1.7以下版本,所谓"没有实际调研,就没有发言权",在此就不做过多

Java环境下shiro的测试-认证与授权

Java环境下shiro的测试 1.导入依赖的核心jar包 <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>1.3.2</version> </dependency> 2.认证程序 2.1 构建users配置文件 xxx.ini doGetAuthenticationInf

Windows环境下使用Nginx搭建负载均衡

前言 最近没有什么事情,喜欢总结并学习东西!前几天写来一个Session共享,那么我们为什么需要Session共享?因为我们的应用程序分布在多个服务器上,为了合理分配用户的请求,就需要用到负载均衡技术(将请求/数据[均匀]分摊到多个操作单元上执行). 怎样实现负载均衡? 1.  使用F5硬件来实现 2. 使用Nginx 工具来搭建一个. 下面我们就讲解一下,在Windows环境下,怎样部署Nginx及常见问题. 一:下载Nginx 去官网下载最新的 Windows-1.11.10 并解压到英文目

Windows环境下MongoDB的搭建

MongoDB的官网下载地址:https://www.mongodb.com/download-center 点击Community Server进入社区版下载页面 当前的稳定版本为(Current Stable Release)为3.6.2 版本的选择: MongoDB的版本命名规则:x.y.z y为奇数时表示当前版本为开发版,如:3.3.0.3.5.1: y为偶数时表示当前版本为稳定版,如:2.8.1.3.6.2: 平台支持: MongoDB多平台支持,在Windows环境下尽量使用64位版

Windows环境下通过Cygwin搭建Gitolite服务器

本文参考:http://blog.csdn.net/benkaoya/article/details/8884677 背景: 去年接触Git前我们团队甚至还在用VSS,一次外包项目中由于需要和外包团队紧密合作,由外包团队引入了Git. 之后,由于团队规模的不断扩大,以及体会到了Git强大的分支功能,我们所有的项目都迁移到了Git上. 再之后,新人的不断加入,领导们担心起权限的问题,我们的服务器管理员考虑使用Gitsis或者Gitolite,但是查找资料研究了一翻之后觉得太繁琐了,一直搁置. 然后

Linux 环境下NFS 服务搭建

之前接到一个电话面试其中一个问题是如何搭建一个NFS服务器,他说他看过我的博客了,忽然我的第一反应是联想到博客里面可能是缺少了一篇关于NFS的文章了^_^~ 开玩笑啦!~ 下面说点正经的,如果大家是在生产环境上建议使用成熟封装后产品,国产和国外的很多固定存储产品都能满足并且价格也不算太贵.如果实在是囊中羞涩可以使用free nas或openfiler等软件.这样是提供服务更加纯粹,从而减少不必要的麻烦.以前在建行工作的时候提供nfs服务的主机经常要重启服务甚至主机才行,因急于恢复生产所以也没详细

windows 环境下Maven私服搭建

使用Nexus.3.11在Windows环境上搭建1.下载nexus.3.11.zip包https://www.sonatype.com/download-oss-sonatype 下载下来之后,进行解压缩 默认情况下,无需修改,但我们须确认一些信息 1=> 端口号修改位置,若后面启动时,端口号占用的情况下,须修改此处2=> nexus启动时的根路径,默认为'\' 二.运行nexus.exe在该目录下cmd打开远程客户端,进入nexus-3.0.1-01\bin下.这里可以在环境变量里把nex

Windows环境下Jekyll+Github搭建个人博客

萌新来讲讲如何使用 Jekyll 搭建个人博客,从安装到配置!炒鸡详细!.原文地址https://zhangmingemma.github.... 介绍 jekyll是一个静态站点生成器,会根据网页源码生成静态文件. 简单.无需数据库,评论功能,不需要不断更新版本,只用关注你的博客内容 静态.只用Markdown(或者Textile).Liquid.HTML&CSS就可以构建可部署的静态网站 博客形态.自定义地址.分类页面.分类博客内容以及自定义的布局设计 使用GitHub Pages可以运行j

ubuntu14.04环境下利用docker搭建solrCloud集群

主要内容: 技术关键点:docker17.06.3安装,docker自制镜像及相关容器操作,docker分配固定IP及添加端口映射,solrCloud集群部署等 主要思路:在Ubuntu14.04操作系统的宿主机中,安装docker17.06.3,将宿主机的操作系统制作成docker基础镜像,之后使用自制的基础镜像在docker中启动3个容器,分配固定IP,再在3个容器中配置solrCloud集群. 注:solrCloud采用的solr内置jetty,需要单独配置zookeeper 容器IP及名