Spring Boot 如何使用 Spring Security 进行认证和授权

这篇具有很好参考价值的文章主要介绍了Spring Boot 如何使用 Spring Security 进行认证和授权。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Spring Boot 如何使用 Spring Security 进行认证和授权

在 Web 应用程序中,认证和授权是非常重要的功能。Spring Security 是一个基于 Spring 框架的强大的安全框架,它提供了完整的认证和授权解决方案,并且可以轻松地集成到 Spring Boot 应用程序中。本文将介绍如何在 Spring Boot 中使用 Spring Security 进行认证和授权,并提供示例代码。

Spring Boot 如何使用 Spring Security 进行认证和授权

添加 Spring Security 依赖

首先,我们需要在 pom.xml 文件中添加 Spring Security 依赖:

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

在上面的依赖中,我们添加了 spring-boot-starter-security 依赖,它包含了 Spring Security 的所有必要依赖。

配置 Spring Security

接下来,我们需要配置 Spring Security。在 Spring Boot 应用程序中,可以使用 Java 配置或 XML 配置来配置 Spring Security。在本文中,我们将使用 Java 配置。

我们需要创建一个名为 SecurityConfig 的类,并添加 @EnableWebSecurity 注解。这个注解启用了 Spring Security,并自动配置了基本的 Web 安全性。

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    
}

接下来,我们可以重写 configure 方法,来配置 Spring Security。例如,我们可以配置基本的认证和授权:

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
          .authorizeRequests()
            .antMatchers("/", "/home").permitAll()
            .antMatchers("/admin/**").hasRole("ADMIN")
            .anyRequest().authenticated()
            .and()
          .formLogin()
            .loginPage("/login")
            .permitAll()
            .and()
          .logout()
            .permitAll();
    }
    
    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth
          .inMemoryAuthentication()
            .withUser("user").password("{noop}password").roles("USER")
            .and()
            .withUser("admin").password("{noop}password").roles("USER", "ADMIN");
    }
}

在上面的代码中,我们使用 authorizeRequests 方法配置了 URL 的访问规则。我们允许所有用户访问根路径和 /home 路径,只有具有 ADMIN 角色的用户才可以访问 /admin 路径。对于其他 URL,需要进行认证。

我们使用 formLogin 方法配置了基于表单的身份验证。我们指定了登录页面的 URL 为 /login,并允许所有用户访问该 URL。我们还使用 logout 方法配置了基于表单的注销,允许所有用户注销。

最后,我们使用 configureGlobal 方法配置了用户的身份验证。在这里,我们使用了基于内存的身份验证,指定了两个用户 useradmin,并设置了他们的密码和角色。

示例代码

下面是一个完整的示例代码,演示了如何在 Spring Boot 中使用 Spring Security 进行认证和授权:

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
          .authorizeRequests()
            .antMatchers("/", "/home").permitAll()
            .antMatchers("/admin/**").hasRole("ADMIN")
            .anyRequest().authenticated()
            .and()
          .formLogin()
            .loginPage("/login")
            .permitAll()
            .and()
          .logout()
            .permitAll();
    }
    
    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth
          .inMemoryAuthentication()
            .withUser("user").password("{noop}password").roles("USER")
            .and()
            .withUser("admin").password("{noop}password").roles("USER", "ADMIN");
    }
}

@Controller
public class HomeController {
    
    @GetMapping("/")
    public Stringhome() {
        return "home";
    }
    
    @GetMapping("/admin")
    public String admin() {
        return "admin";
    }
    
    @GetMapping("/login")
    public String login() {
        return "login";
    }
}

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

在上面的示例代码中,我们创建了一个名为 HomeController 的控制器,它包含了三个处理程序方法:homeadminloginhomeadmin 方法返回字符串,表示视图的名称,而 login 方法返回登录页面的视图名称。

我们还创建了一个名为 Application 的 Spring Boot 应用程序类,并在其中定义了 main 方法,以启动应用程序。

在上面的示例代码中,我们使用了 Thymeleaf 模板引擎来渲染视图。我们还可以使用其他模板引擎,例如 JSP 或 FreeMarker。

运行示例代码

要运行上面的示例代码,我们需要执行以下步骤:

  1. 在命令行中进入应用程序的根目录。
  2. 执行 mvn spring-boot:run 命令,以启动应用程序。
  3. 在浏览器中访问 http://localhost:8080/home,可以看到 home 视图。
  4. 在浏览器中访问 http://localhost:8080/admin,由于当前用户没有 ADMIN 角色,会被重定向到登录页面。
  5. 在浏览器中访问 http://localhost:8080/login,输入用户名和密码,即可登录并访问 admin 视图。

结论

在本文中,我们介绍了如何在 Spring Boot 中使用 Spring Security 进行认证和授权。我们添加了 Spring Security 依赖,配置了基本的认证和授权,并提供了示例代码。通过这些步骤,我们可以轻松地将 Spring Security 集成到我们的 Spring Boot 应用程序中,以确保应用程序的安全性。文章来源地址https://www.toymoban.com/news/detail-502651.html

到了这里,关于Spring Boot 如何使用 Spring Security 进行认证和授权的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 后端进阶之路——综述Spring Security认证,授权(一)

    「作者主页」 :雪碧有白泡泡 「个人网站」 :雪碧的个人网站 「推荐专栏」 : ★ java一站式服务 ★ ★ 前端炫酷代码分享 ★ ★ uniapp-从构建到提升 ★ ★ 从0到英雄,vue成神之路 ★ ★ 解决算法,一个专栏就够了 ★ ★ 架构咱们从0说 ★ ★ 数据流通的精妙之道★ ★后端进

    2024年02月14日
    浏览(31)
  • 系列六、Spring Security中的认证 & 授权 & 角色继承

            关于Spring Security中的授权,请参考【系列一、认证 授权】,这里不再赘述。 1.4.1、admin登录 (一) 登录 (二) 访问sayHi(登录就可以访问) (三)访问/admin/helloWorld接口(需要拥有admin角色)  (四)访问/dba/helloWorld接口(需要拥有dba角色,admin自动继承dba角色)

    2024年02月01日
    浏览(28)
  • 权限管理详解:认证、授权及Spring Security配置解析

    深入探讨权限管理的重要性与实现方式,包括认证、授权概念,基于角色和资源的访问控制方案,以及Spring Security框架的概述和快速入门指南。

    2023年04月10日
    浏览(31)
  • 搭建spring security oauth2认证授权服务器

    下面是在spring security项目的基础上搭建spring security oauth2认证授权服务器 spring security oauth2认证授权服务器主要需要以下依赖 Spring Security对OAuth2默认可访问端点 ​/oauth/authorize​ ​​:申请授权码code,涉及类​ ​AuthorizationEndpoint​ ​ ​/oauth/token​ ​​:获取令牌token,涉及类​

    2024年01月21日
    浏览(44)
  • Spring Security—OAuth2 客户端认证和授权

    关于 JWT Bearer 客户端认证的进一步详情,请参考OAuth 2.0客户端认证和授权许可的 JSON Web Token (JWT)简介。 JWT Bearer 客户端认证的默认实现是  NimbusJwtClientAuthenticationParametersConverter ,它是一个  Converter ,通过在  client_assertion  参数中添加签名的JSON Web Token(JWS)来定制令牌请求

    2024年02月08日
    浏览(37)
  • 【深入浅出 Spring Security(十三)】使用 JWT 进行前后端分离认证(附源码)

    JWT 全称 Java web Token,在此所讲述的是 JWT 用于身份认证,用服务器端生成的JWT去替代原始的Session认证,以提高安全性。 JWT本质是一个Token令牌,是由三部分组成的字符串,分别是头部(header)、载荷(payload)和签名(signature)。头部一般包含该 JWT 的基本信息,例如所使用的

    2024年02月12日
    浏览(29)
  • Springboot +spring security,自定义认证和授权异常处理器

    在Spring Security中异常分为两种: AuthenticationException 认证异常 AccessDeniedException 权限异常 我们先给大家演示下如何自定义异常处理器,然后再结合源码帮助大家进行分析 如何创建一个SpringSecurity项目,前面文章已经有说明了,这里就不重复写了。 3.1配置SecurityConfig 这里主要是

    2024年02月07日
    浏览(31)
  • 系列四、Spring Security中的认证 & 授权(前后端不分离)

    1.3.1、概述         前后端不分离的登录成功回调有两个关键方法,即:defaultSuccessUrl 和 successForwardUrl。那么它们之间的区别是什么呢?        (1)successForwardUrl 表示不管你是从哪里来的,登录后一律跳转到 successForwardUrl 指定的地址。例如 successForwardUrl 指定的地址为/l

    2024年01月19日
    浏览(34)
  • 使用Spring Boot Security 实现多认证 手机号登录 微信扫码登录 微信扫码注册

    Spring Boot 3.x Spring Security 5.7 Spring Redis MyBatis plus 前端 Vue 公司 最近有个新项目 使用单点登录 sso 百度了一圈 也没怎么找到微信扫码注册的功能于是自己写 需求就是 手机 + 密码登录 微信扫码登录 微信扫码注册 微信二维码 登录 和注册二合一 具体实现 稍后我会说 本教程将指导

    2024年04月10日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包