若依前后端分离版ruoyi-vue:增加新的登录接口(新用户表),用于小程序或者APP获取token,并使用若依的验证方法,结合腾讯云短信验证码实现手机号+验证码登陆
在RuoYi-Vue项目中增加一个新的登录接口,用于小程序或APP获取Token,需要以下步骤:
- 创建新的Controller类来处理登录请求。
- 在Service层实现用户验证逻辑。
- 使用Token生成工具生成并返回Token。
以下是一个简单的示例代码:
// 在对应的Controller中增加登录接口
@RestController
@RequestMapping("/api/app-login")
public class AppLoginController {
@Autowired
�e UserDetailsService userDetailsService;
@Autowired
private TokenService tokenService;
@PostMapping("/login")
public AjaxResult login(@RequestBody LoginBody loginBody) {
// 假设这里的username是新用户表的用户名字段
String username = loginBody.getUsername();
// 使用UserDetailsService来加载用户详情
UserDetails userDetails = userDetailsService.loadUserByUsername(username);
if (userDetails == null) {
return AjaxResult.error("用户不存在");
}
// 验证密码
if (!passwordEncoder.matches(loginBody.getPassword(), userDetails.getPassword())) {
return AjaxResult.error("密码不正确");
}
// 生成Token
String token = tokenService.createToken(userDetails);
return AjaxResult.success(token);
}
}
// 用户登录请求体
class LoginBody {
private String username;
private String password;
// getter和setter省略
}
// 确保TokenService已经配置并且实现了创建Token的逻辑
@Service
public class TokenService {
private static final String ACCESS_TOKEN_STRING = "access_token";
@Autowired
private RedisCache redisCache;
public String createToken(UserDetails userDetails) {
String token = Jwts.builder()
.signWith(SignatureAlgorithm.HS512, SecurityConstants.JWT_SECRET)
.setSubject(userDetails.getUsername())
.setExpiration(new Date(System.currentTimeMillis() + SecurityConstants.EXPIRATION_TIME * 1000))
.compact();
redisCache.setCacheObject(ACCESS_TOKEN_STRING + userDetails.getUsername(), token, SecurityConstants.EXPIRATION_TIME, TimeUnit.SECONDS);
return token;
}
// 其他Token相关的方法省略
}
// 确保UserDetailsService已经配置并且实现了加载用户详情的逻辑
@Service("userDetailsService")
public class UserDetailsServiceImpl implements UserDetailsService {
@Autowired
private SysUserService us
评论已关闭