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

wordpress汉化客户端宁波营销型网站建设优化建站

wordpress汉化客户端,宁波营销型网站建设优化建站,万网站底部添加备案号,游戏推广公司靠谱吗全文目录:开篇语前言系统设计概述步骤一:创建Spring Boot项目步骤二:配置数据库步骤三:定义实体类1. 用户实体类 User2. 角色实体类 Role3. 权限实体类 Permission步骤四:创建JPA Repository步骤五:配置Spr…

全文目录:

    • 开篇语
    • 前言
    • 系统设计概述
    • 步骤一:创建Spring Boot项目
    • 步骤二:配置数据库
    • 步骤三:定义实体类
      • 1. 用户实体类 `User`
      • 2. 角色实体类 `Role`
      • 3. 权限实体类 `Permission`
    • 步骤四:创建JPA Repository
    • 步骤五:配置Spring Security
      • 1. 自定义`UserDetailsService`
      • 2. 配置`SecurityConfig`
    • 步骤六:创建注册和登录页面
      • 登录页面 (`login.html`)
      • 注册页面 (`register.html`)
    • 步骤七:创建用户和角色数据
    • 步骤八:测试和运行
    • 总结
    • 文末

开篇语

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云/阿里云/华为云/51CTO;欢迎大家常来逛逛

  今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。

  我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会的,通过文章的形式进行输出,希望以这种方式帮助到更多的初学者或者想入门的小伙伴们,同时也能对自己的技术进行沉淀,加以复盘,查缺补漏。

小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对作者我写作道路上最好的鼓励与支持!

前言

  随着互联网应用的发展,如何安全高效地管理用户权限已经成为开发中的一项基本任务。Spring Boot作为一种开发快速且功能强大的框架,为我们提供了大量的工具和框架来帮助实现用户权限管理系统。Spring Security是一个功能强大的框架,它为身份验证和授权提供了广泛的支持,能够帮助开发者轻松实现复杂的权限管理功能。

  本文将介绍如何基于Spring Boot和Spring Security实现一个简单的用户权限管理系统。我们将从用户管理、角色和权限管理、访问控制等方面逐步构建系统。

系统设计概述

本示例系统将实现以下功能:

  1. 用户注册和登录:支持用户通过用户名和密码登录系统。
  2. 角色和权限管理:支持角色和权限的定义和分配。
  3. 基于角色的访问控制:不同角色的用户只能访问授权的资源。

步骤一:创建Spring Boot项目

  1. 使用Spring Initializr创建一个新的Spring Boot项目,选择以下依赖:

    • Spring Web
    • Spring Data JPA
    • Spring Security
    • MySQL Driver
    • Thymeleaf(用于渲染HTML页面)
    • Spring Boot DevTools(用于热部署)
  2. 完成项目创建后,导入到IDE中。

步骤二:配置数据库

我们将使用MySQL数据库来存储用户、角色和权限的信息。在application.properties中配置数据库连接信息:

spring.datasource.url=jdbc:mysql://localhost:3306/user_permission_system?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root_password
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect

然后,在MySQL中创建数据库:

CREATE DATABASE user_permission_system;

步骤三:定义实体类

1. 用户实体类 User

@Entity
public class User {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;private String username;private String password;@ManyToMany(fetch = FetchType.EAGER)@JoinTable(name = "user_role", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "role_id"))private Set<Role> roles = new HashSet<>();// Getters and Setters
}

2. 角色实体类 Role

@Entity
public class Role {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;private String name;@ManyToMany(fetch = FetchType.EAGER)@JoinTable(name = "role_permission", joinColumns = @JoinColumn(name = "role_id"), inverseJoinColumns = @JoinColumn(name = "permission_id"))private Set<Permission> permissions = new HashSet<>();// Getters and Setters
}

3. 权限实体类 Permission

@Entity
public class Permission {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;private String name;// Getters and Setters
}

步骤四:创建JPA Repository

为每个实体类创建JPA的Repository接口,用于与数据库进行交互:

@Repository
public interface UserRepository extends JpaRepository<User, Long> {Optional<User> findByUsername(String username);
}@Repository
public interface RoleRepository extends JpaRepository<Role, Long> {Role findByName(String name);
}@Repository
public interface PermissionRepository extends JpaRepository<Permission, Long> {Permission findByName(String name);
}

步骤五:配置Spring Security

Spring Security用于处理认证和授权,我们将自定义一个UserDetailsService来加载用户信息,并在SecurityConfig中配置访问控制。

1. 自定义UserDetailsService

我们需要创建一个自定义的UserDetailsService,通过实现UserDetailsService接口来加载用户的角色和权限。

@Service
public class CustomUserDetailsService implements UserDetailsService {@Autowiredprivate UserRepository userRepository;@Overridepublic UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {User user = userRepository.findByUsername(username).orElseThrow(() -> new UsernameNotFoundException("User not found"));List<GrantedAuthority> authorities = user.getRoles().stream().flatMap(role -> role.getPermissions().stream()).map(permission -> new SimpleGrantedAuthority(permission.getName())).collect(Collectors.toList());return new org.springframework.security.core.userdetails.User(user.getUsername(), user.getPassword(), authorities);}
}

2. 配置SecurityConfig

SecurityConfig类中,我们配置Spring Security的相关内容,定义访问权限、登录方式等。

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {@Autowiredprivate CustomUserDetailsService userDetailsService;@Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers("/login", "/register").permitAll()  // 注册和登录页面可以公开访问.antMatchers("/admin/**").hasRole("ADMIN")   // 只有ADMIN角色才能访问/admin路径.anyRequest().authenticated()   // 其他路径需要认证.and().formLogin().loginPage("/login").permitAll().and().logout().permitAll();}@Overrideprotected void configure(AuthenticationManagerBuilder auth) throws Exception {auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder());}@Beanpublic PasswordEncoder passwordEncoder() {return new BCryptPasswordEncoder();  // 使用BCrypt加密密码}
}

步骤六:创建注册和登录页面

为了能够注册和登录,我们需要创建相应的HTML页面。你可以使用Thymeleaf来创建这些页面。

登录页面 (login.html)

<form action="/login" method="post"><input type="text" name="username" placeholder="Username" required><input type="password" name="password" placeholder="Password" required><button type="submit">Login</button>
</form>

注册页面 (register.html)

<form action="/register" method="post"><input type="text" name="username" placeholder="Username" required><input type="password" name="password" placeholder="Password" required><button type="submit">Register</button>
</form>

步骤七:创建用户和角色数据

为了便于开发和测试,我们可以在应用启动时预置一些用户、角色和权限数据。

@Component
public class DataInitializer implements CommandLineRunner {@Autowiredprivate UserRepository userRepository;@Autowiredprivate RoleRepository roleRepository;@Autowiredprivate PermissionRepository permissionRepository;@Overridepublic void run(String... args) throws Exception {Permission readPermission = new Permission();readPermission.setName("READ_PRIVILEGES");permissionRepository.save(readPermission);Role adminRole = new Role();adminRole.setName("ROLE_ADMIN");adminRole.getPermissions().add(readPermission);roleRepository.save(adminRole);User admin = new User();admin.setUsername("admin");admin.setPassword(new BCryptPasswordEncoder().encode("admin123"));admin.getRoles().add(adminRole);userRepository.save(admin);}
}

步骤八:测试和运行

完成上述步骤后,启动Spring Boot应用,访问http://localhost:8080/login进行登录测试。

  • 访问/admin路径时,只有具有ROLE_ADMIN角色的用户可以访问。
  • 其他路径都需要用户认证。

总结

通过Spring Boot和Spring Security,我们可以快速搭建一个简单的用户权限管理系统。系统实现了用户的注册和登录、角色和权限的管理,并通过基于角色的访问控制(RBAC)对资源进行授权。这个基础的系统框架为更复杂的权限管理提供了一个良好的起点,可以根据实际需求进一步扩展和优化。

文末

好啦,以上就是我这期的全部内容,如果有任何疑问,欢迎下方留言哦,咱们下期见。

… …

学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!

wished for you successed !!!


⭐️若喜欢我,就请关注我叭。

⭐️若对您有用,就请点赞叭。
⭐️若有疑问,就请评论留言告诉我叭。


版权声明:本文由作者原创,转载请注明出处,谢谢支持!

http://www.lryc.cn/news/616858.html

相关文章:

  • 如何建设局域网内部网站市场调研一般怎么做
  • 现在做一个app大概多少钱深圳排名seo公司
  • 网站建设的架构设计制作网站建设入门
  • 网站图片加载 优化推广恶意点击软件怎样使用
  • 织梦旅游网站源码宁波seo关键词培训
  • adobe配色网站淘宝客推广平台
  • 阿里云从哪里建设网站seo网络排名优化方法
  • 构建动态网站设计百度认证是什么
  • php做的网站收录百度推荐现在为什么不能用了
  • 北票网站建设石家庄seo网络优化的公司
  • 用python网站开发做app找什么公司
  • 网站数据库 数据库空间购买租用百度地图网页版进入
  • 网站流量如何增加软件开发培训机构
  • 某省政府及下属各级网站群统一建设全国疫情排行榜
  • 个人域名怎么做社交网站重庆seo关键词优化服务
  • 怎么做网站前端百度入驻绍兴
  • 企业管理咨询公司靠谱吗seo有哪些优缺点?
  • 建设网站的费用调研百度网页版入口链接
  • WordPress金融网站交换链接适用于哪些网站
  • wordpress需要先安装数据库企业seo职位
  • 网站建设委托书seo报名在线咨询
  • 做网站申请域名的流程seo就业指导
  • 中小企业公司广州做seo的公司
  • 天津企业网站建设方案抖音关键词排名系统
  • 做聚划算网站seo网站优化培训要多少钱
  • 创意做网站公司百度seo公司哪家最好
  • 太原顶呱呱做网站地址电话海会网络做的网站怎么做优化
  • 做游戏网站赚钱么市场调研报告3000字范文
  • 官方网站建设的必要市场营销案例
  • 做网站都需要具备什么网站友情链接怎么添加