ajax - 使用 Spring loginUrlAuthenticationEntryPoint 对服务进行 ajax 调用
问题描述
我有一个带有 spring boot 的 web 应用程序,它使用 loginUrlAuthenticationEntryPoint 和它旁边的 restful 服务。该应用程序服务于一个使用 thymeleaf 的网页,它使用会话进行身份验证和一个使用基本身份验证的移动应用程序。所以有一个购物车项目屏幕( html table )在餐厅页面中,我想通过异步单击它们(从数据库)来删除这些项目。但是该页面的安全性(页面 url)由 login-url-auth-entry-point 处理,而不是 rest auth security配置。
因此,当我进行 ajax 调用以删除购物车项目 url 时,它返回 302。我的 ajax 调用不进行身份验证并尝试将我重定向到登录页面。我尝试了很多东西。
我尝试在 ajax 调用中使用 xhrFields{withCredentials:true} - 没有用。
我尝试使用 document.cookie 设置授权字段 - document.cookie 返回空。
我正在尝试发送请求的控制器:
@ResponseBody
@PreAuthorize("hasRole('RESTAURANT') OR hasRole('ADMIN')")
@GetMapping("/flushitem/{id}")
public ResponseEntity<String> freeCartItem(@PathVariable("id") Long id) {
try {
cartService.deleteCart(id);
}catch(Exception e) {
e.printStackTrace();
}
return new ResponseEntity<>(HttpStatus.OK);
}
我还尝试删除 @ResponseBody 注释并使用带有 html 链接标签的 thymeleaf 的 th:href 发出请求。即使我的控制器返回 void,它也会尝试重定向到某个地方。
长话短说,我的问题是,我应该如何在通过会话进行身份验证的网页中进行 ajax 调用?或者我可以在不使用 ajax 和 rest 控制器功能的情况下制作我想要的功能吗?
我没有尝试进行任何与 cors 相关的操作。(我猜)
解决方案
推荐阅读
- r - 如何清理不规则字符串并将它们组织到右列的数据框中
- javascript - 使用反应或角度不加载但没有错误的故事书演示
- c - 线性同余生成器的浮点异常(核心转储)
- javascript - Spring boot自定义gson BEGIN_OBJECT但出现STRING错误
- sql - SQL Server 中点后的子字符串
- python-3.x - 无法使用 Python 拟合正态分布。scipy包缺陷?
- ruby-on-rails - `heroku run rake db:seed` 失败且没有错误;表在远程数据库中存在但为空
- java - 从 Activiti 工作流中检索所有用户任务
- pytorch - 如何找到 torch.nn.conv_transpose2d 和 max_unpool2d 的参数?
- java - docker中的内存使用超过了xmx控制或小于xms