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

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

相关推荐
大不点wow3 分钟前
Spring 中 @Bean、@Component 与 @Configuration 的作用及底层逻辑
java·spring
IvorySQL15 分钟前
云环境下PostgreSQL的Cgroup内存管理实践
java·数据库·postgresql
不定积分要+C_yyy16 分钟前
Java基础核心精讲:基本数据类型与包装类区别、自动装箱拆箱与缓存陷阱实战解析
java·开发语言
jvmind_dev17 分钟前
第三章:GC 日志深度分析(上)——多版本、多收集器的统一解析
java·agent
xingxiliang19 分钟前
ReliableAgent:类似工程级可用的agent示例
java·开发语言·agent
治愈系贝壳24 分钟前
ARM ---day1
linux·arm开发·学习
qdprobot28 分钟前
齐护AIOT科创社团学习套件桌面总程AiTall V3版人工智能Mixly图形化编程AI小智物联网AI具身智能应用椴木科创作品
人工智能·物联网·学习
亦暖筑序31 分钟前
AgentScope-Java 入门:保存评审状态并生成 Markdown 报告
java·人工智能·后端
遇乐的果园38 分钟前
前端学习笔记-vue列表处理
前端·vue.js·学习
He BianGu40 分钟前
【笔记】WPF中 Brush 的类型、继承关系、使用方式和注意事项
笔记·wpf