springsecurity-权限控制

一,**需求:

**用户没有登录的时候,导航栏上只显示登录按钮,用户登录之后,导航栏可以显示登录的用户信息及注销按钮!还有就是,比如admin这个用户,它只有 vip2,vip3功能,那么登录则只显示这两个功能,而vip1的功能菜单不显示!

二,实现

1,导入依赖

XML 复制代码
 <dependency>
            <groupId>org.thymeleaf.extras</groupId>
            <artifactId>thymeleaf-extras-springsecurity4</artifactId>
            <version>3.0.5.RELEASE</version>
        </dependency>

2,导入命名空间

复制代码
xmlns:sec="http://www.thymeleaf.org/extras/spring-security"

3,修改index页面

html 复制代码
<div>
  <!--如果未登录则显示以下内容-->
  <div sec:authorize="!isAuthenticated()">
    <a class="btn btn-primary" th:href="@{/toLogin}">登陆</a>
  </div>
  <!--如果已登录则显示以下内容-->
  <div sec:authorize="isAuthenticated()">
    用户名<p sec:authentication="name"></p>
    角色<p sec:authentication="principal.authorities"></p>
    <a class="btn btn-primary" th:href="@{/logout}">注销</a>
  </div>
</div>
<!--如果用户拥有这个角色,则显示该div内的内容,如果没有则不显示-->
<div class="div" sec:authorize="hasRole('vip1')">
  <a th:href="@{/level1/1}">level1-1</a><br/>
  <a th:href="@{/level1/2}">level1-2</a>
</div>
<div class="div" sec:authorize="hasRole('vip2')">
  <a th:href="@{/level2/1}">level2-1</a><br/>
  <a th:href="@{/level2/2}">level2-2</a>
</div>
<div class="div" sec:authorize="hasRole('vip3')">
  <a th:href="@{/level3/1}">level3-1</a><br/>
  <a th:href="@{/level3/2}">level3-2</a>
</div>

4,Security配置

java 复制代码
protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
  
                .and()
                .formLogin() // 使用表单登录
                .loginPage("/login") // 指定登录页面

               
                .and()
                .logout() // 配置注销
                .logoutUrl("/logout") // 注销路径
                .logoutSuccessUrl("/login?logout") // 注销成功后跳转的页面
                .and()
                .csrf().disable();//关闭csrf功能


    }
相关推荐
ltl4 小时前
Transformer 整体架构:一张图看懂
后端
ltl4 小时前
Decoder 详解:为什么它天生适合生成
后端
Dicky-_-zhang4 小时前
消息队列Kafka/RocketMQ选型与高可用架构:从单体到100万TPS的演进
java·jvm
晨曦中的暮雨4 小时前
4.15腾讯 CSIG云服务产线 一面
java·开发语言
ltl4 小时前
Encoder 详解:6 层堆叠到底在做什么
后端
程序员cxuan4 小时前
微信读书官方发了 skills,把我给秀麻了。
人工智能·后端·程序员
fake_ss1984 小时前
AI时代学习全栈项目开发的新范式
java·人工智能·学习·架构·个人开发·学习方法
茉莉玫瑰花茶4 小时前
工作流的常见模式 [ 1 ]
java·服务器·前端
未若君雅裁5 小时前
Spring AOP、日志切面与声明式事务原理
java·后端·spring
zhangxingchao5 小时前
AI应用开发六:企业知识库
前端·人工智能·后端