在RuoYi框架(v3.8.6版本)中添加新用户表和新的登录接口,主要涉及到以下几个步骤:
- 创建新的用户实体类(UserLoginReq)和控制器类(UserLoginController)。
- 创建新的Mapper接口(UserMapper)和对应的XML文件。
- 实现登录方法(login)在UserLoginController中。
- 在RuoYi的Shiro配置中添加新用户的认证支持。
- 测试新的登录接口。
以下是实现上述步骤的示例代码:
- 创建UserLoginReq.java:
public class UserLoginReq {
private String username;
private String password;
// 省略getter和setter方法
}
- 创建UserLoginController.java:
@RestController
public class UserLoginController {
@Autowired
private UserService userService;
@PostMapping("/login")
public AjaxResult login(@RequestBody UserLoginReq userLoginReq) {
// 调用Service层的登录方法
return userService.login(userLoginReq.getUsername(), userLoginReq.getPassword());
}
}
- 创建UserMapper.java和对应的XML映射文件:
public interface UserMapper extends BaseMapper<User> {
// 根据用户名查询用户信息
User selectUserByUsername(String username);
}
- 实现登录方法(UserService.java):
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
// ... 其他方法 ...
@Override
public AjaxResult login(String username, String password) {
User user = userMapper.selectUserByUsername(username);
if (user == null) {
return AjaxResult.error("用户不存在");
}
// 密码验证逻辑
if (!SecurityUtils.matchesPassword(password, user.getPassword())) {
return AjaxResult.error("密码错误");
}
// 生成Token
LoginUserToken token = new LoginUserToken(user.getUserId(), user.getDeptId(), username, user.getPassword(), user.getUserType());
return AjaxResult.success(token);
}
}
- 在Shiro配置中添加新用户的支持:
// 省略其他配置代码
@Bean("securityManager")
public SecurityManager securityManager(UserRealm userRealm) {
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
// 设置realm
securityManager.setRealm(userRealm);
// 省略其他配置
return securityManager;
}
@Bean
public UserRealm userRealm() {
UserRealm userRealm = new UserRealm();
// 省略其他配置
return userRealm;
}
- 测试新的登录接口。
以上代码提供了一个简化的示例,实际应用中需要考虑密码加密、权限校验、异常处理等细节。