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

    你可能感兴趣的文章
    Mysql学习总结(45)——Mysql视图和事务
    查看>>
    Mysql学习总结(46)——8种常被忽视的SQL错误用法
    查看>>
    Mysql学习总结(48)——MySql的日志与备份还原
    查看>>
    Mysql学习总结(49)——从开发规范、选型、拆分到减压
    查看>>
    Mysql学习总结(4)——MySql基础知识、存储引擎与常用数据类型
    查看>>
    Mysql学习总结(50)——Oracle,mysql和SQL Server的区别
    查看>>
    Mysql学习总结(51)——Linux主机Mysql数据库自动备份
    查看>>
    Mysql学习总结(52)——最全面的MySQL 索引详解
    查看>>
    Mysql学习总结(53)——使用MySql开发的Java开发者规范
    查看>>
    Mysql学习总结(54)——MySQL 集群常用的几种高可用架构方案
    查看>>
    Mysql学习总结(55)——MySQL 语句大全再温习
    查看>>
    Mysql学习总结(56)——MySQL用户管理和权限设置
    查看>>
    Mysql学习总结(57)——MySQL查询当天、本周、本月、上周、本周、上月、距离当前现在6个月数据
    查看>>
    Mysql学习总结(58)——深入理解Mysql的四种隔离级别
    查看>>
    Mysql学习总结(59)——数据库分库分表策略总结
    查看>>
    Mysql学习总结(5)——MySql常用函数大全讲解
    查看>>
    Mysql学习总结(60)——并发量大、数据量大的互联网业务数据库设计规范总结
    查看>>
    Mysql学习总结(61)——MySQL优化之DBA级优化整理汇总
    查看>>
    Mysql学习总结(62)——MySQL连接com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link问题
    查看>>
    Mysql学习总结(63)——Mysql数据库架构方案选择与分析
    查看>>