问道私服四五
每天发布最新SF

Doc创建几个相关接口直接通过Doc或可获取电脑详情

在后面的系列文章2.7.2中,已经创建了几个相关的,可以直接通过Doc或者.如:

GET http://localhost:9099/computer/1

访问此服务以获取 id 为 1 的笔记本的详细信息。

以下文章用于实现用户认证和授权。

1 add.1 添加依赖项

Boot很友好,已经管理好依赖版本,但是提供了集成的方法:



    org.springframework.boot
    spring-boot-starter-security

1.2 测试服务

添加依赖后重启服务,可以在控制台看到输出:

image-20220819161719909

在浏览器中访问服务会手动跳转到默认提供的登录页面。手动跳转到浏览器地址栏:

:9099/登录。

在登录页面,用户名填写user,密码输入之前控制台北输出的密码。点击“登录”进入系统,显示笔记本详情。

2硬编码配置用户名和密码

我们使用的Boot版本是2.7.2,对应的版本是5.7.2,从5.7开始,使用Some变化,其中之一是配置时不推荐使用继承类。

demo中使用的用户名为user,密码是在启动时生成的,绝对不符合开发需要。用户名和密码的配置有三种形式:

在配置文件.yml中写入用户名和密码;定义配置类,这样写用户名和密码;实现,然后定义配置类进行配置。

后三个可以在演示中播放。

2.1在配置文件中配置用户名和密码

这些方法比较简单问道私服权限的数据库账号和密码,可以直接在.yml中配置:

spring:
  profiles:
    active: @env@
  security:
    user:
      name: hero1
      password: '111111'
      roles: 'admin'

2.2在显存中配置用户名和密码

删除里面的节点相关配置,使用配置文件,配置在显存中生效的用户名和密码。

问道私服权限的数据库账号和密码_问道私服91问道_oracle库授权库权限

创建一个配置类:

package com.yygnb.demo.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.provisioning.InMemoryUserDetailsManager;
@Configuration
public class SecurityConfig {
    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }
    @Bean
    public InMemoryUserDetailsManager userDetailsService() {
        UserDetails user = User.builder()
                .username("hero2")
                .password(passwordEncoder().encode("111111"))
                .roles("admin")
                .build();
        return new InMemoryUserDetailsManager(user);
    }
}

重启服务,在登录界面输入 hero2/ 进行测试。

这些方法也是硬编码的用户名和密码,实际开发中不会用到。所以,先把这个文件删掉,然后在旁边继续学习。

3 数据库配置用户名和密码

在开始本节之前,请确保删除之前的编译。

3.1 个数据库表

首先你需要定义表结构。

因为我这里是基于上面的boot2.7.2系列文章的demo,所以继续使用表格来定义表结构。亲爱的读者,您可以从上面获取demo基础项目,也可以联系我获取。也可以摆脱demo基础工程,自己创建数据库表结构问道私服权限的数据库账号和密码,如SQL语句、图形界面等。

问道私服91问道_问道私服权限的数据库账号和密码_oracle库授权库权限

在/db/demo/目录下创建一个文件demo–v2.xml,里面定义了对数据库的改动。



    
        
            
                
            
            
                
            
            
                
            
            
                
            
        
        
        
            
            
            
            
        
        
            
            
            
            
        
        

oracle库授权库权限_问道私服91问道_问道私服权限的数据库账号和密码

该文件定义了用户表并插入了三条数据。用户表只有四个数组:id字段、用户名、密码、名称,字段自行下拉。

重启服务,会手动生成表结构。

3.2 生成实体类

可以逆向生成,下面的代码可以复制。

com.yygnb.demo..用户

/**
 * 用户表
 */
@Schema(title = "用户")
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class User implements Serializable {
    private static final long serialVersionUID = 1L;
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    @Schema(title = "用户名")
    @NotNull(message = "不能为空")
    private String username;
    @Schema(title = "密码")
    @NotNull(message = "不能为空")
    private String password;
    @Schema(title = "姓名")

    private String name;
}

3.3

com.yygnb.demo..:

public interface UserMapper extends BaseMapper {
}

//.xml:





至此,计划的工作就完成了,拿出来回去。

3.4

,认证和授权需要一个对象,该对象可以加密密码。

com.yygnb.demo..g:

@Configuration
public class PasswordEncoderConfig {
    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }
}

3.5 个实现套接字

提供了一个套接字: .这个插座只有一种方式。这样就可以查询数据库,根据用户名查询用户信息。就这样返回。是一个提供实现类User的。

创建一个类:pl,实现,并添加@注解。

com.yygnb.demo..impl.pl:

package com.yygnb.demo.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yygnb.demo.entity.User;
import com.yygnb.demo.mapper.UserMapper;

oracle库授权库权限_问道私服权限的数据库账号和密码_问道私服91问道

import lombok.RequiredArgsConstructor; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.AuthorityUtils; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; import java.util.List; @RequiredArgsConstructor @Service public class UserDetailsServiceImpl implements UserDetailsService { // @Autowired private final PasswordEncoder passwordEncoder; private final UserMapper userMapper; @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { QueryWrapper wrapper = new QueryWrapper(); wrapper.eq("username", username); User user = this.userMapper.selectOne(wrapper); if (user == null) { throw new UsernameNotFoundException("根据用户名未查询到用户"); } // 模拟查询权限 List authorities = AuthorityUtils.commaSeparatedStringToAuthorityList("admin"); return new org.springframework.security.core.userdetails.User( user.getUsername(), passwordEncoder.encode(user.getPassword()), authorities); } }

如果是以前的版本,还需要定义类继承的配置,重绘技巧,设置成这个模式等等,现在的版本就不需要那些无聊的操作了。

重启服务以访问测试。

感谢您阅读本文。如果这篇文章给了你一点帮助或启发,请三连支持,点赞,关注,收藏。笔者会继续与大家分享更多干货

赞(5) 打赏
未经允许不得转载:四五公益问道sf发布网 » Doc创建几个相关接口直接通过Doc或可获取电脑详情
分享到: 更多 (0)

问道私服SF发布网,问道公益私服下载、私服问道开服表

联系我们联系我们

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

支付宝扫一扫打赏

微信扫一扫打赏