Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Spring loginUrlAuthenticationEntryPoint对服务进行ajax调用_Ajax_Spring_Spring Boot_Authentication_Http Headers - Fatal编程技术网

使用Spring loginUrlAuthenticationEntryPoint对服务进行ajax调用

使用Spring loginUrlAuthenticationEntryPoint对服务进行ajax调用,ajax,spring,spring-boot,authentication,http-headers,Ajax,Spring,Spring Boot,Authentication,Http Headers,我有一个带有spring boot的web应用程序,它使用LoginUrauThenticationEntryPoint和它旁边的restful服务。该应用程序服务于一个使用thymeleaf的网页,该网页使用会话进行身份验证,移动应用程序使用基本身份验证。因此,餐厅页面中有一个购物车项目屏幕(html表),我想通过异步(从数据库)单击这些项目来删除这些项目。但该页面的安全性(页面url)由登录url验证入口点处理,而不是由rest验证安全配置处理。 所以,当ı调用ajax来删除购物车项目url

我有一个带有spring boot的web应用程序,它使用LoginUrauThenticationEntryPoint和它旁边的restful服务。该应用程序服务于一个使用thymeleaf的网页,该网页使用会话进行身份验证,移动应用程序使用基本身份验证。因此,餐厅页面中有一个购物车项目屏幕(html表),我想通过异步(从数据库)单击这些项目来删除这些项目。但该页面的安全性(页面url)由登录url验证入口点处理,而不是由rest验证安全配置处理。
所以,当ı调用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
@预授权(“hasRole('RESTAURANT')或hasRole('ADMIN'))
@GetMapping(“/flushitem/{id}”)
公共响应属性freeCartItem(@PathVariable(“id”)长id){
试一试{
cartService.deleteCart(id);
}捕获(例外e){
e、 printStackTrace();
}
返回新的响应状态(HttpStatus.OK);
}
我还尝试删除@ResponseBody注释,并使用thymeleaf的th:href和html链接标签发出请求。即使我的控制器返回void,它也会尝试重定向到某个地方。
长话短说,我的问题是,如何在通过会话进行身份验证的网页中进行ajax调用?或者我可以在不使用ajax和rest控制器功能的情况下实现我想要的功能吗

我不想做任何与cors相关的手术


我认为问题在于会话已过期,并重定向到登录页面。您是否可以尝试使用JWT令牌代替会话。在基于令牌的应用程序中,服务器创建带有秘密的JWT,并将JWT发送给客户端。客户端存储JWT(通常在本地存储中),并在每个请求的头中包含JWT。然后,服务器将使用来自客户端的每个请求验证JWT,并发送响应。参考:过期是不可能的!我在本地主机上工作,每次都重置服务器,每次都登录。我知道如何使用Jwt,但将网页部分构建在会话系统上并将其更改为Jwt是一个巨大的问题。我想知道我是否在尝试一件不可能的事,一件违反http协议的事,或者是否有解决方法?您是否在服务器日志中看到任何错误?您是否可以查看此帖子: