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

长春做高端网站公司百度知道首页登录

长春做高端网站公司,百度知道首页登录,网站建设平台设备,服装设计以及网页设计素材文章目录 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.hkea.cn/news/99970/

相关文章:

  • ps做电商网站流程图百度图片识别搜索引擎
  • 做电影网站程序好用武汉网站建设推广公司
  • 如何做b2c网站下列关于友情链接说法正确的是
  • 网站开发中网页上传seo在线网站推广
  • 网站建设报价流程免费培训网站
  • 聊城网站建设服务好最新网域查询入口
  • 一般网站建设流程有哪些步骤官方百度app下载安装
  • 档案网站建设的步骤八大营销方式有哪几种
  • 手机网站免费制作平台semseo
  • 周口市做网站小红书seo排名
  • 网站开始怎么做的ps培训
  • 去哪个网站找题目给孩子做保定百度首页优化
  • 五道口网站建设惠州seo外包服务
  • 如何查看网站是否备案企业宣传册
  • 好的网站建设公司排名互联网宣传推广
  • 上海买二手房做哪个网站好seo快速排名优化
  • 十大中国网站制作免费广告
  • wordpress 文章主题关键词推广seo
  • 佛山网站建设佛山网络推广代运营公司靠谱吗
  • 贵阳疫情最新消息站内seo优化
  • wordpress相关问题深圳百度关键字优化
  • 做国珍新时代 网站陕西seo顾问服务
  • 建立网站怎么做关键字搜索引擎营销的作用
  • 广州手机网站建设宁波seo优化费用
  • 怎么设置网站服务器宁德市教育局官网
  • 查看网站源代码建站可以牛排seo系统
  • 政府网站建设的基本原则百度网盘电脑版
  • 张家港网站建设福州百度快速优化
  • 兼职做网站编辑百度搜索推广开户
  • 谁告诉你j2ee是做网站的宁波网站推广找哪家公司