托马斯小火车喷雾又喷烟,一直喷,喷喷喷. 2023-04-12 09:34 采纳率: 77.8%
浏览 23
已结题

thymeleaf 配置了shiro,当无权限时,页面shiro标签报错。

thymeleaf 配置了shiro

//用于thymeleaf模板使用shiro标签
    /*@Bean
    public ShiroDialect shiroDialect() {
        return new ShiroDialect();
    }*/


但是当无权时 页面里面的shiro 标签就回报错,没起作用。有知道怎么解决的吗。

  • 写回答

1条回答 默认 最新

  • 「已注销」 2023-04-12 10:00
    关注

    以下内容部分参考ChatGPT模型:


    这个问题可能是由于没有正确配置Shiro的权限控制导致的。可能需要检查是否正确配置了Shiro的过滤器链和权限控制规则。

    可以尝试在Shiro的配置中添加一个未授权的URL,以便当用户访问没有权限的页面时,能够正确地返回一个未授权的错误页面。例如:

    shiroFilterFactoryBean.setUnauthorizedUrl("/unauthorized");
    

    然后在Controller中添加一个返回未授权页面的方法:

    @RequestMapping("/unauthorized")
    public String unauthorized() {
        return "unauthorized";
    }
    

    在Thymeleaf模板中,可以根据Shiro的授权状态来动态显示或隐藏页面元素。例如:

    <div th:if="${#authorization.expression('isAuthenticated()')}">
        <p>Welcome, ${#authentication.name}!</p>
    </div>
    
    <div th:unless="${#authorization.expression('isAuthenticated()')}">
        <p>Please log in to continue.</p>
    </div>
    
    <div th:if="${#authorization.expression('hasRole(''admin'')')}">
        <p>You have admin privileges.</p>
    </div>
    
    <div th:unless="${#authorization.expression('hasRole(''admin'')')}">
        <p>You do not have admin privileges.</p>
    </div>
    

    这些代码片段将根据用户的身份和角色动态显示或隐藏页面元素。如果用户没有正确的权限,那么与Shiro相关的标记应该被忽略或隐藏,以避免出现错误。


    如果我的建议对您有帮助、请点击采纳、祝您生活愉快

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月1日
  • 创建了问题 4月12日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度