博客
关于我
二.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/

    你可能感兴趣的文章
    pip 升级报错AttributeError: ‘NoneType’ object has no attribute ‘bytes’
    查看>>
    pip 安装opencv-python卡死
    查看>>
    pip 安装出现异常
    查看>>
    Pip 安装失败:需要 SSL
    查看>>
    Pip 安装挂起
    查看>>
    pip 或 pip3 为 Python 3 安装包?
    查看>>
    pip 文件损坏导致 pip无法使用 报错 ImportError: cannot import name 'main' from 'pip._int
    查看>>
    pip 无法从 requirements.txt 安装软件包
    查看>>
    pip/pip3更换国内源
    查看>>
    pip3 install PyQt5 --user 失败
    查看>>
    pip3命令全解析:Python3包管理工具的详细使用指南
    查看>>
    pip3安装命令重复创建文件‘/tmp/pip-install-xxxxx/package‘失败
    查看>>
    PIPE 接口信号列表
    查看>>
    pipeline配置与管理Job企业级实战
    查看>>
    pipeline项目配置实战
    查看>>
    Pipenv 与 Conda?
    查看>>
    QVGA/HVGA/WVGA/FWVGA分辨率屏含义及大小//Android虚拟机分辨率
    查看>>
    pipreqs : 无法将“pipreqs”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径 正确,然后再试一次。
    查看>>
    pipy国内镜像的网址
    查看>>
    quiver绘制python语言
    查看>>