一个netcore webapi项目,登录时有图片验证码这个, 我在login.html登录页面直接<img src='http://a.com/api/code' />加载验证码,然后用ajax请求api/login登录接口。其中api/code接口用session缓存了验证码,在api/login去校验验证码时,session获取的值一直不对。调试发现每次的sessionid不一致。我ajax设置了withCredentials: true属性,api项目也启用了跨域请求。
想问下,这种项目,能用session校验验证码吗 ?如果能,该怎么去校验啊
用 session 校验验证码是可以的,建议设置一下 cookie name
services.AddSession(
options =>
{
options.IdleTimeout = TimeSpan.FromMinutes(15);
options.Cookie.Name = ".Cnblogs.Session";
options.Cookie.SameSite = SameSiteMode.Unspecified;
});
感谢大佬回答。
我这样试了还是不可以。
我api地址用localhost:1000,html地址用127.0.0.1,html页面加载了验证码后,调用校验验证码接口还是不匹配。
api/code和api/login 是一个后端服务吗?
是同一个,我本地调试发现sessionid不一样。
验证码我是html上直接放在img图片的src上(api/code)
然后点击按钮时再用ajax去请求的验证接口。