博客
关于我
二.SpringSecurity基础-简单登录实现
阅读量:732 次
发布时间:2019-03-21

本文共 2420 字,大约阅读时间需要 8 分钟。

Spring Security 是一个基于 Spring 应用程序提供声明式安全访问控制的框架,通过 IoC 和 AOP 等核心Spring功能,简化了企业系统安全配置的复杂性。

1. Spring Security 介绍

Spring Security 能够帮助开发者在基于 Spring 的企业应用中实现基于角色的访问控制( Role-based Access Control, RBAC )。它通过定义安全规则和接收令牌的方式,保护应用程序中的敏感资源,确保只有授权的用户能够访问这些资源。

2. Spring Security 入门

2.1 搭建工程

基于 Spring Boot 搭建一个 web 项目,项目名称建议命名为 spring_security_demo。这是一个典型的 Spring Boot 项目结构。

2.2 导入依赖

在项目的 pom.xml 中引入必要的依赖:

  • spring-boot-starter-security:提供 Spring Security 的核心功能
  • spring-boot-starter-web:集成 Spring Web 组件
  • spring-boot-starter-test:用于测试环境支持
  • junit Packs:单元测试工具

这些依赖会在 Spring Boot 父类库中找到对应的版本,避免手动配置版本号。

2.3 主配置类

创建 ApplicationConfig.java 文件,作为 Spring Boot 运行的主配置类:

@SpringBootApplicationpublic class ApplicationConfig {    public static void main(String[] args) {        SpringApplication.run(ApplicationConfig.class);    }}

2.4 Web 控制器

创建 AuthController.java 文件,负责处理登录成功后的跳转:

@Controllerpublic class AuthController {    @RequestMapping("/loginSuccess")    @ResponseBody    public String loginSuccess() {        return "登录成功";    }}

2.5 配置 Spring Security

创建 WebSecurityConfig.java 文件,继承自 WebSecurityConfigurerAdapter,进行安全配置:

@EnableWebSecuritypublic class WebSecurityConfig extends WebSecurityConfigurerAdapter {    @Bean    public UserDetailsService userDetailsService() {        InMemoryUserDetailsManager inMemoryUserDetailsManager = new InMemoryUserDetailsManager();        inMemoryUserDetailsManager.createUser(User.withUsername("zs").password("123").authorities("admin").build());        return inMemoryUserDetailsManager;    }    @Bean    public PasswordEncoder passwordEncoder() {        return NoOpPasswordEncoder.getInstance();    }    @Override    protected void configure(HttpSecurity http) throws Exception {        http.authorizeRequests()                .antMatchers("/login").permitAll()                .anyRequest().authenticated()                .and().formLogin()                    .successForwardUrl("/loginSuccess")                .and().logout().permitAll()                .and().csrf().disable();    }}

2.6 测试

在浏览器中访问 http://localhost:8080/login,将会自动定向安全页面。输入用户名 zs 和密码 123,成功登录后将重定向至 /loginSuccess 页面显示 "登录成功"。

3. 认证流程小结

在这个案例中,我们已经完成了一个基本的 Spring Boot + Spring Security 入门配置。主要包括以下步骤:

  • Spring Security 根据配置文件中的设置,对所有需要认证的资源进行拦截
  • 未经授权的访问请求将被自动 redirect 到 "/login" 页面进行认证
  • 用户登录成功后,系统会自动跳转至 "/loginSuccess" 页面返回成功提示信息
  • 测试过程中可以验证各个安全配置是否正常生效,包括登录认证、权限控制等功能
  • 这个简单的案例展示了 Spring Security 的基本使用方式,适合用于快速搭建安全防护的 Spring 应用程序。

    转载地址:http://dadgz.baihongyu.com/

    你可能感兴趣的文章
    python 列表生成式
    查看>>
    Python 列表解析 大文件
    查看>>
    python 列表转字典方法
    查看>>
    Python 列表(List)概述-ChatGPT4o作答
    查看>>
    Python网络爬虫基础进阶到实战教程
    查看>>
    Python 初学者需要知道的四条建议
    查看>>
    Python 判断字符串是否包含子字符串
    查看>>
    python 判断当前时间是否为零点
    查看>>
    python 利用pandas读取本地中CSV文件的指定列 列名重命名 并保存回本地
    查看>>
    python 利用pyspark读取HDFS中CSV文件的指定列 列名重命名 并保存回HDFS
    查看>>
    python 利用pyttsx3文字转语音
    查看>>
    python 利用已有Ner模型进行数据清洗合并
    查看>>
    python 到大数据开发工程师_如何成为一个大数据开发工程师?
    查看>>
    python 加密解密(base64, AES)
    查看>>
    Python 包管理器和 Node.js
    查看>>
    Python 单词字母顺序不变且所有倒排
    查看>>
    python 启动提示IDLE's subprocess didn't make conne...
    查看>>
    python 命令接口_实现“[命令][操作][参数]”样式的命令行接口?
    查看>>
    Python 和 OpenCV.如何检测图像中的所有(填充)圆形/圆形对象?
    查看>>
    Python 和 RabbitMQ - 聆听来自多个渠道的消费事件的最佳方式?
    查看>>