springboot 与shiro整合-----(四)mybatis+shiro+thymeleaf实现标签整合之用户授权

一 导读和效果

springboot 与shiro整合——(一)页面过滤器实现拦截

springboot 与shiro整合——(二)mybatis用户登录认证

springboot 与shiro整合-----(三)mybatis+shiro实现用户授权

本文在前面面的基础上增加thymeleaf标签整合

具体三步可实现根据不同用户显示不同菜单:导入依赖——》添加shirodialect—>页面添加shiro语法

效果如下:

普通用户登录效果:

管理员登录效果:

二.导入依赖


   com.github.theborakompanioni
   thymeleaf-extras-shiro
   2.0.0

二.配置ShiroDialect,用于thymeleaf和shiro标签整合使用

在ShiroConfig类里添加

@Bean
    public ShiroDialect getShiroDialect()
    {
        return new ShiroDialect();
    }

三.在页面使用shiro语法

  • 新增菜单
  • 四 . 本文只实现了授权的显示和隐藏,但是如果认证通过了,在地址栏里直接输入http://localhost:8091/addMenu1 也是能够访问页面的。为了不让未授权用户访问,增加权限功能校验

    步骤:1.在ShiroConfig中配置以下bean

    /**
         * 配置Shiro生命周期处理器
         * @return
         */
        @Bean(name = "lifecycleBeanPostProcessor")
        public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() {
            return new LifecycleBeanPostProcessor();
        }
        /**
         * 开启Shiro的注解(如@RequiresRoles,@RequiresPermissions),需借助SpringAOP扫描使用Shiro注解的类,并在必要时进行安全逻辑验证
         * 配置以下两个bean(DefaultAdvisorAutoProxyCreator(可选)和AuthorizationAttributeSourceAdvisor)即可实现此功能
         * @return
         */
        @Bean
        @DependsOn({"lifecycleBeanPostProcessor"})
        public DefaultAdvisorAutoProxyCreator advisorAutoProxyCreator(){
            DefaultAdvisorAutoProxyCreator advisorAutoProxyCreator = new DefaultAdvisorAutoProxyCreator();
            advisorAutoProxyCreator.setProxyTargetClass(true);
            return advisorAutoProxyCreator;
        }
    
    
        /**
                * 开启shiro 注解模式
     * 可以在controller中的方法前加上注解
     * 如 @RequiresPermissions("userInfo:add")
     * @param securityManager
     * @return
             */
        @Bean
        public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(@Qualifier("securityManager") DefaultWebSecurityManager securityManager){
            AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor();
            authorizationAttributeSourceAdvisor.setSecurityManager(securityManager);
            return authorizationAttributeSourceAdvisor;
        }

    2. 在addMenu1的controller增加@RequiresPermissions("menu:add") 注解

        @RequiresPermissions("menu:add")
        @RequestMapping("/addMenu1")
        public String addMenu1()
        {
    
            return "menu/addMenu";
    
        }

    然后重启项目,再次使用普通用户账户登录之后,在浏览器上调用http://localhost:8091/addMenu1 就会跳转到以下页面。证明权限校验成功。 

    springboot 与shiro整合-----(四)mybatis+shiro+thymeleaf实现标签整合之用户授权_第1张图片

    但是并没有跳转到我们写好的未授权页面,我找到了一篇文章解决这个办法

    springboot整合shiro-Whitelabel Error Page解决(三)

    你可能感兴趣的:(springboot,shiro,mybatis,thymeleaf)