zoukankan      html  css  js  c++  java
  • Springboot整合SpringSecurity--对静态文件进行权限管理

    一、要求

    在这里插入图片描述
    index.html 可以被所有用户访问
    1.html只能被VIP1访问
    2.html只能被VIP2访问
    3.html只能被VIP3访问
    没有权限跳到登录页

    二、依赖管理

    • springboot 2.2.5
    • spring security 5.2.4

    pom.xml需要的依赖如下:

    	<dependencies>
    		<!--web-->
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-web</artifactId>
    		</dependency>
    		<!--security-->
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-security</artifactId>
    		</dependency>
    
    	</dependencies>
    

    三、配置config文件

    我们先看看官网的教程:spring security 5.2.4 配置教程
    官网教程
    模拟官网教程配置如下:

    package com.xsy.worker_manager.config;
    
    import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
    import org.springframework.security.config.annotation.web.builders.HttpSecurity;
    import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
    import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
    import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
    
    @EnableWebSecurity // 开启web security服务
    public class SecurityConfig extends WebSecurityConfigurerAdapter {
    
        //请求认证的规则
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            //首页可以访问,功能页只有有权限的人才能访问
            http.authorizeRequests()
                    .antMatchers("/").permitAll()
                    .antMatchers("/level1/**").hasRole("vip1")
                    .antMatchers("/level2/**").hasRole("vip2")
                    .antMatchers("/level3/**").hasRole("vip3");
    
            //没有权限跳到登录页 /login,登陆后跳到主页
            http.formLogin();
    
    
            //开启注销功能 /logout, 注销后跳到首页
            http.logout().logoutSuccessUrl("/index.html");
            
            //开启记住我功能
            http.rememberMe();
        }
    
    
        //授权
        //密码编码
        //spring security 5.0+要密码加密
        @Override
        protected void configure(AuthenticationManagerBuilder auth) throws Exception {
            //将用户信息放到内存里
            auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder()).
                    withUser("xsy").password(new BCryptPasswordEncoder().encode("123456")).roles("vip3").
            and().withUser("csy").password(new BCryptPasswordEncoder().encode("123456")).roles("vip2").
            and().withUser("sy").password(new BCryptPasswordEncoder().encode("123456")).roles("vip1");
    
        }
    }
    
    

    四、扩展

    如果需要在后台接口设置权限,则需要在config配置文件上使用如下注解:

    @EnableGlobalMethodSecurity(prePostEnabled = true)
    

    然后直接在contoller的接口方法上添加注解如下:

    @PreAuthorize("hasRole('vip1')")
    
  • 相关阅读:
    javascript入门篇(一)
    vue开发项目详细教程(第一篇 搭建环境篇)
    node基础03:使用函数
    node基础02:第一个node程序
    node基础01:简要介绍
    mac基本用法
    ES5基础01:正则表达式
    php基础11:运算符
    H5(一):使用formData对象模拟表单
    HTTP基础(一):如何使用浏览器network查看请求和响应的信息
  • 原文地址:https://www.cnblogs.com/theory/p/13338771.html
Copyright © 2011-2022 走看看