Linux新建一个admin的用户在root家目录下并指定用户ID为六六六六,设置密码为admin@123

useradd admin -d /root/admin -u 六六六六

 

passwd admin admin@123(密码太简单了可能会通不过)

PS:六为阿拉伯数字因为CSDN不给发六六六

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好,针对您的问题,我理解您想要实现的是根据Admin表中type字段的值来设置用户的角色,从而实现基于角色的访问控制(RBAC)。在Spring Security中,可以通过自定义实现UserDetailsService接口来获取用户信息并设置用户的角色信息。 具体实现步骤如下: 1. 创建Admin表,包含id、username、password、type等字段。 2. 创建Role表,包含id、name等字段,用于存放角色信息。 3. 创建用户角色关联表,包含id、user_id、role_id等字段,用于存放用户和角色的关联信息。 4. 自定义实现UserDetailsService接口,重写loadUserByUsername方法,根据username查询Admin表中的用户信息,并根据type字段的值设置用户的角色信息。 5. 在Spring Security配置类中,配置使用自定义的UserDetailsService实现类,并配置基于角色的访问控制规则。 示例代码如下: 1. Admin表实体类 ``` @Entity @Table(name = "admin") public class Admin { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String username; private String password; private String type; // 省略getter和setter方法 } ``` 2. Role表实体类 ``` @Entity @Table(name = "role") public class Role { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; // 省略getter和setter方法 } ``` 3. 用户角色关联表实体类 ``` @Entity @Table(name = "user_role") public class UserRole { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "user_id") private Long userId; @Column(name = "role_id") private Long roleId; // 省略getter和setter方法 } ``` 4. 自定义实现UserDetailsService接口 ``` @Service public class CustomUserDetailsService implements UserDetailsService { @Autowired private AdminRepository adminRepository; @Autowired private UserRoleRepository userRoleRepository; @Autowired private RoleRepository roleRepository; @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { Admin admin = adminRepository.findByUsername(username); if (admin == null) { throw new UsernameNotFoundException("用户名不存在"); } List<UserRole> userRoles = userRoleRepository.findByUserId(admin.getId()); List<String> roleNames = new ArrayList<>(); for (UserRole userRole : userRoles) { Role role = roleRepository.findById(userRole.getRoleId()).orElse(null); if (role != null) { roleNames.add(role.getName()); } } return new User(admin.getUsername(), admin.getPassword(), AuthorityUtils.createAuthorityList(roleNames.toArray(new String[0]))); } } ``` 5. Spring Security配置类 ``` @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Autowired private CustomUserDetailsService customUserDetailsService; @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers("/admin/**").hasRole("ADMIN") .antMatchers("/root/**").hasRole("ROOT") .anyRequest().authenticated() .and() .formLogin().loginPage("/login").defaultSuccessUrl("/index").permitAll() .and() .logout().logoutUrl("/logout").logoutSuccessUrl("/login").permitAll(); } @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.userDetailsService(customUserDetailsService); } } ``` 以上代码仅供参考,具体实现需要根据实际情况进行调整。希望能对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值