• 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')")
    
  • 相关阅读:
    Jxl 简单运用 Excel创建,插入数据,图片,更新数据,
    tomcat端口号被占用
    QQ、MSN、淘包旺旺、Skype临时对话的html链接代码
    验证信息
    wpf学习笔记数据绑定功能总结
    wpfStyle注意点
    wpf轻量绘图DrawingVisual
    wpfDrawingBrush注意点
    wpf容易误解的Image
    wpf装饰器
  • 原文地址:https://www.cnblogs.com/theory/p/13338771.html
Copyright © 2020-2023  润新知