Spring Security的简单介绍与案例

简介: # 引言Spring Security是一个功能强大的安全框架,旨在为Java应用程序提供身份验证和授权功能。它可以很容易地整合到Spring应用程序中,并支持多种身份验证方法,包括基于表单的身份验证、基于HTTP的身份验证以及基于OAuth 2.0的身份验证。# 依赖```<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId></dependency>```# 第一个例子要在Spring应用

引言

Spring Security是一个功能强大的安全框架,旨在为Java应用程序提供身份验证和授权功能。它可以很容易地整合到Spring应用程序中,并支持多种身份验证方法,包括基于表单的身份验证、基于HTTP的身份验证以及基于OAuth 2.0的身份验证。

依赖

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-security</artifactId>
</dependency>

第一个例子

要在Spring应用程序中使用Spring Security,首先需要在项目中添加Spring Security的依赖。

然后,可以使用@EnableWebSecurity注解启用Web安全性,并通过编写WebSecurityConfigurer接口的实现来配置安全规则。例如,可以使用以下代码配置基于表单的身份验证:

@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .formLogin()
            .loginPage("/login")
            .permitAll();
    }
}

在这段代码中,我们启用了基于表单的身份验证,并指定了登录页面的URL。这意味着用户在访问受保护的资源时,会被重定向到登录页面,并在登录成功后才能访问这些资源。

Spring Security还提供了其他一些有用的功能,例如用户角色和权限的管理、密码加密以及安全传输。使用Spring Security可以很容易地为应用程序提供强大的安全的检查。

拦截后与登录

我们在拦截请求后如果不指定会默认跳到一个# Spring Security提供的登陆界面

我们输入账号user

同时在控制台中找到生成的密码,即可完成登录。

一个小demo

package com.example.demospringsecurity;

import org.springframework.beans.factory.annotation.Configurable;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.password.NoOpPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;

@Configuration
@EnableWebSecurity
public class WebSecurityConfigurer extends WebSecurityConfigurerAdapter {
    @Bean
    PasswordEncoder passwordEncoder() {
        return NoOpPasswordEncoder.getInstance();
    }


    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication()
                .withUser("lyy")
                .password("123456").roles("admin", "user")
                .and()
                .withUser("security")
                .password("security").roles("user");
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {

        http.authorizeRequests()  //开启配置
                .antMatchers("/cxyxj/**").hasRole("admin")   //访问/cxyxj/**下的路径,必须具备admin身份
                .antMatchers("/security/**").hasRole("user") //访问/security/**下的路径,必须具备user身份
                .antMatchers("/permitAll").permitAll() // 访问/permitAll路径,不需要登录
                .anyRequest() //其他请求
                .authenticated()//验证   表示其他请求只需要登录就能访问
                .and()
                .formLogin() // 开启表单登陆
                .loginPage("自定义的拦截后跳转的界面");
    }

    @Bean
    @Override
    protected AuthenticationManager authenticationManager() throws Exception {
        return super.authenticationManagerBean();
    }
}

上面的demo中,我们重写了一些方法,并为其添加了如Configuration,Bean的注解。

我们完成了自定义页面的跳转和自定义密码,并且为一些页面设置了需要鉴别的权限。

最后

在使用Spring Security时,还可以使用许多其他功能来提高应用程序的安全性。例如,可以使用Spring Security的内置加密功能对用户密码进行加密。这样,即使在数据库被黑客入侵的情况下,用户的密码也无法被直接读取。

此外,还可以使用Spring Security的访问控制功能,根据用户角色或权限来控制对应用程序资源的访问。例如,可以设置某些资源仅对管理员可见,而对普通用户隐藏。

此外,Spring Security还提供了许多其他安全功能,例如安全传输、跨站请求伪造保护以及身份验证和授权的扩展功能。使用这些功能,可以构建出更加安全的应用程序。

总的来说,Spring Security是一个功能强大的安全框架,可以为Java应用程序提供身份验证和授权功能,同时还提供了许多其他安全功能。使用Spring Security可以很容易地构建出安全的应用程序。

相关文章
|
1月前
|
安全 Java 数据安全/隐私保护
使用Spring Security实现细粒度的权限控制
使用Spring Security实现细粒度的权限控制
|
1月前
|
安全 Java 数据库
实现基于Spring Security的权限管理系统
实现基于Spring Security的权限管理系统
|
1月前
|
安全 Java 数据安全/隐私保护
解析Spring Security中的权限控制策略
解析Spring Security中的权限控制策略
|
4天前
|
Java API Spring
Spring5入门到实战------1、Spring5框架概述、入门案例
这篇文章是Spring5框架的入门教程,概述了Spring框架的核心概念和特点,并通过一个创建普通Java类的案例,详细演示了从下载Spring核心Jar包、创建配置文件、编写测试代码到运行测试结果的完整流程,涵盖了Spring IOC容器的使用和依赖注入的基本用法。
Spring5入门到实战------1、Spring5框架概述、入门案例
|
3天前
|
Java API Spring
Spring5入门到实战------1、Spring5框架概述、入门案例
这篇文章是Spring5框架的入门教程,概述了Spring框架的核心概念和特点,并通过一个创建普通Java类的案例,详细演示了从下载Spring核心Jar包、创建配置文件、编写测试代码到运行测试结果的完整流程,涵盖了Spring IOC容器的使用和依赖注入的基本用法。
|
1月前
|
安全 Java 数据安全/隐私保护
使用Spring Security实现细粒度的权限控制
使用Spring Security实现细粒度的权限控制
|
1月前
|
安全 Java 数据安全/隐私保护
使用Java和Spring Security实现身份验证与授权
使用Java和Spring Security实现身份验证与授权
|
1月前
|
存储 安全 Java
Spring Security在企业级应用中的应用
Spring Security在企业级应用中的应用
|
1月前
|
开发框架 Java 开发者
Spring框架的最新功能与应用案例解析
Spring框架的最新功能与应用案例解析
|
2月前
|
存储 安全 Java
Spring Security与OAuth2集成开发
Spring Security与OAuth2集成开发