栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring Security:一、入门(新)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring Security:一、入门(新)

项目结构:

 代码下载:555555

一、创建项目

        1.1、创建springboot

        1.2、导包

        
            org.springframework.boot
            spring-boot-starter-web
        
 
        
            org.springframework.boot
            spring-boot-starter-security
        
        
            org.springframework.security
            spring-security-test
        

        1.3、创建controller        

@RestController
public class HelloController {

    
    @GetMapping("/noLogin")
    public String noLogin(){
        return "no login";
    }

}

        1.4、启动项目

        1.5、访问 ​http://localhost:8080/noLogin​ ,页面自动跳转到登录页面,

                

                        输入默认用户名:user

                        随机密码:

                

         1.6、访问成功

                

 二、自定义用户名和密码

         1、配置文件

                在 application.properties 文件中配置信息:              

spring.security.user.name=admin
spring.security.user.password=admin

        2、代码中配置(先注释配置文件)

@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    //通过重写configure方法,进行创建用户。表示在内存中配置了两个用户
    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {

        auth.inMemoryAuthentication()
                .withUser("admin1")
                .password(passwordEncoder().encode("admin1"))
                .roles("admin1");

        auth.inMemoryAuthentication()
                .withUser("user1")
                .password(passwordEncoder().encode("user1"))
                .roles("user1");

    }

    @Bean
    public PasswordEncoder passwordEncoder(){
        return new BCryptPasswordEncoder();
    }
}

        注:从 Spring5 开始,强制要求密码要加密,如果非不想加密,可以使用一个过期的 PasswordEncoder 的实例 NoOpPasswordEncoder,这里配置的内存都是放在内存中的

        

三、忽略拦截

        3.1、在 WebSecurityConfig 类中添加以下代码

    @Override
    public void configure(WebSecurity web) throws Exception {
        web.ignoring().antMatchers("/noLogin"); // 需要忽略的路径(多个用逗号隔开,或者或者不重要)
    }
四、登录权限配置

        对于登录成功、登录失败,我们都可以继承WebSecurityConfigurerAdapter类来进行配置

        4.1、修改controller,新增方法和注解@PreAuthorize

@RestController
public class HelloController {

    
    @GetMapping("/noLogin")
    public String noLogin(){
        return "No login";
    }

    
    @GetMapping("/haveLogin")
    public String haveLogin(){
        return "Have login";
    }

    
    @GetMapping("/admin/role")
    @PreAuthorize("hasAnyRole('adminRole')")
    public String helloAdmin(){
        return "hello adminRole";
    }

    
    @GetMapping("/test/role")
    @PreAuthorize("hasAnyRole('testRole')")
    public String helloUser(){
        return "hello testRole";
    }

    
    @GetMapping("/role/adminAndTest")
    @PreAuthorize("hasAnyRole('adminRole', 'testRole')")
    public String index(){
        return "adminRoleAndTestRole";
    }

}

        4.2、继续改造 WebSecurityConfig 类,添加以下代码

    
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        //参数文档说明:https://blog.csdn.net/weixin_34346099/article/details/92479543
        http
                .csrf().disable()
                .authorizeRequests()
                .antMatchers("/admin
        ;

    }

到这里Spring Security入门结束了

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/270249.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号