当前位置: 首页 > news >正文

优秀品牌策划方案惠州百度关键词优化

优秀品牌策划方案,惠州百度关键词优化,做图表的网站知乎,用pageadmin做的网站用什么虚拟主机号文章目录 SpringBoot整合SpringSecurity详解一、引言二、引入依赖三、配置 Spring Security四、自定义用户详细信息服务五、使用示例1. 创建用户实体类2. 测试登录功能 六、总结 SpringBoot整合SpringSecurity详解 一、引言 在当今的软件开发中,安全是一个至关重要…

文章目录

  • SpringBoot整合SpringSecurity详解
    • 一、引言
    • 二、引入依赖
    • 三、配置 Spring Security
    • 四、自定义用户详细信息服务
    • 五、使用示例
      • 1. 创建用户实体类
      • 2. 测试登录功能
    • 六、总结

SpringBoot整合SpringSecurity详解

在这里插入图片描述

一、引言

在当今的软件开发中,安全是一个至关重要的方面。Spring Security 是一个强大且可扩展的 Java 安全框架,用于保护基于 Spring 的应用程序。它提供了身份验证、授权和多种安全防护机制,如 CSRF 保护和防止会话劫持等。通过与 Spring Boot 的无缝集成,Spring Security 成为构建安全应用的理想选择。本文将详细介绍如何在 Spring Boot 应用程序中整合 Spring Security,包括配置、用户认证和授权等关键步骤。

二、引入依赖

在开始之前,我们需要在 Spring Boot 项目中引入 Spring Security 相关的依赖。在 pom.xml 文件中添加以下依赖:

xml复制

<!-- Spring Security Starter -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId><version>3.3.4</version>
</dependency><!-- JWT 依赖,用于生成和解析 JSON Web Tokens -->
<dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-api</artifactId><version>0.12.6</version>
</dependency>
<dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-impl</artifactId><version>0.12.6</version><scope>runtime</scope>
</dependency>
<dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-jackson</artifactId><version>0.12.6</version><scope>runtime</scope>
</dependency>

三、配置 Spring Security

接下来,我们需要创建一个配置类 SecurityConfig,用于管理所有与 Spring Security 相关的配置。这个类需要使用 @EnableWebSecurity 注解来启用 Spring Security 的 web 安全功能。

java复制

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {@Autowiredprivate CustomUserDetailsService userDetailsService;@Overrideprotected void configure(HttpSecurity http) throws Exception {http.csrf().disable() // 关闭 CSRF 保护.authorizeRequests().antMatchers("/login", "/register").permitAll() // 允许匿名访问登录和注册页面.anyRequest().authenticated() // 其他所有请求都需要认证.and().formLogin().loginPage("/login").permitAll() // 自定义登录页面.defaultSuccessUrl("/home", true) // 登录成功后跳转到主页.and().logout().permitAll(); // 允许注销}@Autowiredpublic void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder());}@Beanpublic PasswordEncoder passwordEncoder() {return new BCryptPasswordEncoder();}
}

在上述配置中,我们禁用了 CSRF 保护,允许匿名访问登录和注册页面,并且所有其他请求都需要认证。我们还自定义了登录页面和登录成功后的跳转页面。此外,我们配置了用户详细信息服务和密码编码器。

四、自定义用户详细信息服务

为了加载用户的详细信息,我们需要实现 UserDetailsService 接口。这个接口提供了一个方法 loadUserByUsername,用于根据用户名加载用户信息。

java复制

@Service
public class CustomUserDetailsService implements UserDetailsService {@Autowiredprivate UserRepository userRepository;@Overridepublic UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {User user = userRepository.findByUsername(username);if (user == null) {throw new UsernameNotFoundException("User not found");}return new org.springframework.security.core.userdetails.User(user.getUsername(), user.getPassword(), true, true, true, true, user.getAuthorities());}
}

在这个实现中,我们从数据库中查找用户信息,并返回一个 UserDetails 对象。如果用户不存在,则抛出 UsernameNotFoundException 异常。

五、使用示例

1. 创建用户实体类

首先,我们需要创建用户、角色和权限的实体类。这些实体类将用于存储用户信息和权限信息。

java复制

package com.geli.domain;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
import java.util.Set;@NoArgsConstructor
@AllArgsConstructor
@Data
public class User implements Serializable {private Integer id;private String username;private String password;private String addUser;private String editUser;private Date addDate;private Date updateDate;private Role role;
}@NoArgsConstructor
@Data
public class Role implements Serializable {private Integer id;private String name;private String keyWord;private String description;private Set<Permission> permissionList;
}@Data
@NoArgsConstructor
public class Permission implements Serializable {private Integer id;private String name;private String keyWord;private String description;
}

2. 测试登录功能

为了测试登录功能,我们可以在 UserServiceImpl 中添加一个用户账号,并尝试登录。

java复制

import com.geli.service.UserService;
import org.springframework.stereotype.Service;@Service
public class UserServiceImpl implements UserService {@Overridepublic User findUserByUserName(String username) {User user = new User();user.setId(1);user.setUsername("D46033");user.setPassword("$2a$10$Pgs46f8LzTjOvA5Sg6qDkOBbUoAtWQQdHFoEbbmWPak.34/NwJQrW");return user;}
}

登录成功后,用户将被重定向到自定义的主页。

六、总结

本文详细介绍了如何在 Spring Boot 应用程序中整合 Spring Security,包括引入依赖、配置安全策略、自定义用户详细信息服务和测试登录功能。通过这些步骤,您可以为您的应用程序提供强大的安全保护。希望本文对您有所帮助,如果您有任何问题或建议,请随时留言。


版权声明:本博客内容为原创,转载请保留原文链接及作者信息。

参考文章

  • spring security 超详细使用教程(接入springboot、前后端分离)
  • SpringBoot整合SpringSecurity详细教程(实战开发讲解)
http://www.yayakq.cn/news/247585/

相关文章:

  • 怎么做网站界面分析网站在哪里搜索
  • asp.net网站制作视频教程邯郸自媒体有哪些
  • 简洁风格的网站模板免费ppt模板免费
  • 网站开发后台前端数据库有什么网站可以做微信支付宝
  • 网站icp备案信息是什么意思南宁企业网络推广
  • 公司网站改版建议东莞化工网站建设
  • 企业网站seo案例分析免费关键词优化排名软件
  • 印刷网站源码适合手机上做的兼职
  • 网站开发的可行性报告wordpress里文章图片无法显示
  • 江苏炒股配资网站开发网站做301跳转的方法
  • 做网站的步骤是什么天津河北做网站的公司
  • 建好的网站能修改吗用discuz做的手机网站
  • 用网站模板做新网站舆情监控都有哪些内容
  • 网站利润来源做网站的图片需要多少钱
  • python数据分析做网站东莞做好网络推广
  • 商城网站建设公司绍兴建站服务
  • 做企业网站需要服务器么广州新闻头条最新消息
  • 电子商城网站开发流程电商建站系统
  • 如何做简单的网站网站建设外包注意事项
  • 网站导航栏条源码深圳网站设计是什么
  • 怎么制作网站游戏怎样建设个人影视网站
  • 南宁网站设计报价怎样进入公众号平台登录
  • 宁夏建设工程造价网站会计公司网站模板
  • html5国内网站建设校园推广大使的职位描述
  • 网站提示域名重定向怎么做网络营销策划是什么意思
  • 济南网站优化公司艾乎网wordpress怎么进入
  • 奥迪网站建设策划书网址制作
  • 湖北省城乡和住房建设厅网站郯城建设银行网站
  • 易企秀网站开发技术WordPress手机显示内容
  • 最好链接的网站建设网站建设建设哪家便宜