zoukankan      html  css  js  c++  java
  • shiro注解,初始化资源和权限,会话管理

     有具体问题的可以参考之前的关于shiro的博文,关于shiro的博文均是一次工程的内容 

    注解:

     

    新建一个类:
    此时需要有admin的权限才可以执行下面的代码
    public class ShiroService {
         
         @RequiresRoles({"admin"})
         public void testMethod(){
               System.out.println("test。。。。。");
         }
    }

     把新建的类注入到spring容器中 

     <bean  class="com.MrChengs.shiro.service.ShiroService"></bean>

    ShiroHandler .java中加入

    @Controller
    @RequestMapping("/shiro")
    public class ShiroHandler {
         
         
         @Autowired
         private ShiroService shiroService;
         
         @RequestMapping("/testMethod")
         public String testMethod(){
               shiroService.testMethod();
               return "redirect:/list.jsp";
         }
         ....
    }     

     list.jsp中加入测试超链接

      <a href="shiro/testMethod">Test Method</a>
     
    此时我们登陆admin可以成功测试
     
    当我们登陆user再点击测试的时候
    UnauthorizedException

     初始化资源和权限

     点击看源码可知

     

    其配置的文件的内容最终被封装成一个map

    新建一个初始化文件的类:
    在map的方法体里面可以写我们需要在数据库中查询等代码
    LinkedHashMap一定是这个
    package com.MrChengs.shiro.Factory;
    import java.util.LinkedHashMap;
    public class FilterChainDefinitionMapperBUilder {
         public LinkedHashMap<String, String>  builderFilterChainDefinitionMap(){
               LinkedHashMap<String, String> map = new  LinkedHashMap<String, String>();
               map.put("/login.jsp", "anon");
               map.put("/shiro/login", "anon");
               map.put("/shiro/logout", "logout");
               map.put("/user.jsp", "roles[user]");
               map.put("/admin.jsp", "roles[admin]");
               map.put("/**", "authc");
               return map;
         }
    }
    在application中:
    把注释的地方替换成红色标准的地方
      <!--
            <property name="filterChainDefinitions">
                <value>
                    /login.jsp = anon
                      /shiro/login = anon
                      /shiro/logout = logout
                      /user.jsp = roles[user]
                      /admin.jsp = roles[admin]
                    # everything else requires authentication:
                    /** = authc
                </value>
            </property>
            -->
            <property name="filterChainDefinitionMap"  ref="filterIniDef"></property>
        <!-- 配置一个bean,实际上是一个map,实例通过工厂模式的方法 -->
        <bean id="filterIniDef"  factory-bean="filterChainDefinitionMapperBUilder"
        factory-method="builderFilterChainDefinitionMap"></bean>
        
        <bean id="filterChainDefinitionMapperBUilder"  class="com.MrChengs.shiro.Factory.FilterChainDefinitionMapperBUilder"></bean>
        

     其余不变测试时没有任何问题的!!!

     会话管理

     

     

    测试如下

     

  • 相关阅读:
    composer 中国全量镜像 laravel-china.org
    Increase PHP script execution time with Nginx
    How to make a USB stick use ISO image file in debian
    Getting svn to ignore files and directories
    Carbon document
    Use Laravel/homestead 环境维护基于 brophp 开发的老项目
    Vagrant WinNFSd
    How to use jQuery countdown plugin
    消息系统的设计与实现
    VMvare 复制的数据库,需要改变的配置
  • 原文地址:https://www.cnblogs.com/Mrchengs/p/9997494.html
Copyright © 2011-2022 走看看