ruoyi-cloud 使用ApiPost模拟登录

发布时间 2023-08-11 14:45:59作者: 摧残一生

ruoyi-cloud 使用ApiPost模拟登录

简述

使用自带的ruoyi-cloud模拟登陆时,需要先使用http://localhost/dev-api/code获取验证码及uuid,然后通过http://localhost/dev-api/login将code及uuid的正确值代入,当两者都正确后才能真正进入login方法进行用户名和密码验证,该拦截器位于ValidateCodeFilter文件夹中,其中设置了VALIDATE_URL,当包含时则必须有正确的验证码方可继续执行。因此对于使用ApiPost来说,比较难实现。

实现

那我们就另辟蹊径,通过添加方法来实现ApiPost模拟登录

添加新的登陆方法

将TokenController中的login方法复制,并重新命名为SyncLogin。

@PostMapping("syncLogin")
public R<?> loginByTb(@RequestBody LoginBody form)
{
    // 用户登录
    LoginUser userInfo = sysLoginService.login(form.getUsername(), form.getPassword());
    // 获取登录token
    return R.ok(tokenService.createToken(userInfo));
}

注意:由于拦截器中判断VALIDATE_URL的方法为StringUtils.containsAnyIgnoreCase,因此只要前缀为login的都会走验证码,因此不能开头为login。

在Nacos中添加白名单

访问nacos,默认用户名和密码都为Nacos。

选择网关的yml的编辑按钮

在配置内容中 ignore->whites 中添加:- /auth/syncLogin

发布。

使用ApiPost模拟登录

链接地址为:http://192.168.1.21:8088/auth/syncLogin

使用Post的方式进行Json格式的传输,传输json为

{
    "password": "Sjtb@123.com",
    "username":"sjtb"
}

点击发送后正确的返回值为

{
	"code": 200,
	"msg": null,
	"data": {
		"access_token": "eyJhbGciOiJIUzUxMiJ9.eyJ1c2VyX2lkIjo2LCJ1c2VyX2tleSI6IjI1NjE0NWI1LWNhYzUtNGZmNS1hMTM4LWVlZjA2NTJmM2QxYiIsInVzZXJuYW1lIjoic2p0YiJ9._Ci8f9IBkTBpkz979AH_dXscuiWu4mHXGCcpD2uwRwlnaIP4BaJSDpunMyP2FQEZ8ZPyUymTPJVO7YdVOVeObw",
		"expires_in": 720
	}
}

访问

当登录成功后,可直接进行该用户权限下的所有后台操作。

例如获取用户信息:http://localhost/dev-api/system/user/getInfo

在Header中添加参数名Authorization,值为登陆后返回的access_token的数值。

返回结果如图