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");
    }
}

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

相关推荐
只因只因爆4 分钟前
如何在idea中写spark程序
java·spark·intellij-idea
你憨厚的老父亲突然10 分钟前
从码云上拉取项目并在idea配置npm时完整步骤
java·npm·intellij-idea
全栈凯哥22 分钟前
桥接模式(Bridge Pattern)详解
java·设计模式·桥接模式
PXM的算法星球26 分钟前
【软件工程】面向对象编程(OOP)概念详解
java·python·软件工程
两点王爷26 分钟前
springboot项目文件上传到服务器本机,返回访问地址
java·服务器·spring boot·文件上传
小吕学编程29 分钟前
ES练习册
java·前端·elasticsearch
qsmyhsgcs41 分钟前
Java程序员转人工智能入门学习路线图(2025版)
java·人工智能·学习·机器学习·算法工程师·人工智能入门·ai算法工程师
Humbunklung1 小时前
PySide6 GUI 学习笔记——常用类及控件使用方法(常用类矩阵QRectF)
笔记·python·学习·pyqt
云心似我心^o^4051 小时前
使用POI和EasyExcel使用导入
java
pjx9871 小时前
质量的“试金石”:精通Spring Boot单元测试与集成测试
spring boot·spring·单元测试·集成测试