SpringSecurity -- 入门使用

文章目录

什么是 SpringSesurity ?

在我们的开发中,安全还是有些必要的

用 拦截器 和 过滤器 写代码还是比较麻烦。
SpringSecuritySpringBoot 的底层安全默认选型。一般我们需要认证和授权,这也是它的核心功能。我们仅仅需要导入 spring-boot-starter-security 模块,进行少量的配置,即可实现强大的安全管理
认证:验证当前访问系统的用户 是不是本系统的用户,并且要具体哪一个用户
授权:经过认证后判断当前用户是否有权限进行某个操作

细节

登录过程

负责我们在登录页面填写的用户和密码登录的请求,入门案例主要由他负责。

使用方法

总结到代码之中。



复制代码
// 开启 web 安全
@EnableWebSecurity
public class springSecurityConfig extends WebSecurityConfigurerAdapter { // 然后我们继承 web安全配置 适配器


    // 链式编程
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().  // authorize 授权
                antMatchers("/").permitAll()  //  ant ==> 蚂蚁    matcher ==> 匹配器 permitAll ==> 允许所有
                .antMatchers("/test1/**").hasRole("vip1")  //  role角色
                .antMatchers("/test2/**").hasRole("vip2")
                .antMatchers("/test3/**").hasRole("vip3");

        // 如果没有用户的情况下,则会跳转到 login 页面       // 登录加工的url
        http.formLogin().loginPage("/toLogin").usernameParameter("name").passwordParameter("pwd").loginProcessingUrl("/Login");

//                 http.formLogin()
//                   .loginPage("/toLogin") // 设置登录页面URL
//                   .loginProcessingUrl("/Login") // 设置表单提交的URL 个人感觉:应该是需要认证的模块
//                   .failureUrl("/login-error") // 登录失败后的重定向URL
//                   .defaultSuccessUrl("/home", true) // 登录成功后的默认重定向URL
//                .and()
//                  .logout()
//                   .logoutSuccessUrl("/"); // 注销成功后的重定向URL

        // 开启记住我功能
        http.rememberMe().rememberMeParameter("jiZhuWo");

        http.csrf().disable();  // 关闭脚本跨站攻击
        // 开启注销功能
        http.logout().logoutSuccessUrl("/index");  // 注销成功后,回到 "/index" 之中。
    }

    // 认证
    @Override // 最新版本需要密码加密
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {  // Authentication 认证 Manager 管理者
        auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder()) // Memory 记忆
                .withUser("xj").password(new BCryptPasswordEncoder().encode("abc")).roles("vip1","vip2")  // memory ==> 记忆
                .and()
                .withUser("test").password(new BCryptPasswordEncoder().encode("cba")).roles("vip3");
    }
}

我们可以看到,拥有这个功能,不仅提供了权限、安全等,还另外 省去了写登录后台、过滤器等大量繁杂的代码,十分的方便

相关推荐
武子康2 分钟前
Java-199 JMS Queue/Topic 集群下如何避免重复消费:ActiveMQ 虚拟主题与交付语义梳理
java·分布式·消息队列·rabbitmq·activemq·mq·java-activemq
崇山峻岭之间6 分钟前
C++ Prime Plus 学习笔记041
c++·笔记·学习
LSL666_9 分钟前
12 MyBatis的连接池
java·服务器·mybatis
Arva .10 分钟前
说说线程的生命周期和状态
java·开发语言
tryxr18 分钟前
HashTable、HashMap、ConcurrentHashMap 之间的区别
java·开发语言·hash
万岳科技系统开发19 分钟前
私域直播小程序源码的整体架构设计与实现思路
学习·小程序
无事好时节23 分钟前
Linux 线程
java·开发语言·rpc
我家领养了个白胖胖27 分钟前
Prompt、格式化输出、持久化ChatMemory
java·后端·ai编程
richxu2025100131 分钟前
嵌入式学习之路>单片机核心原理篇>(11) 存储器(Flash & SRam)
单片机·嵌入式硬件·学习
sszdlbw41 分钟前
后端springboot框架入门学习--第二篇
java·spring boot·学习