grails - 本地 401 工作,临时服务器得到 302

标签 grails jquery spring-security mod-proxy

我可能不会获得帮助第一次尝试所需的所有信息,但我会尽我所能,并在我们进行过程中对其进行编辑。

我有一个使用 Spring-Security-Core 插件的 Grails 1.3.7 应用程序。我正在编写处理 session 超时和 ajax 请求的代码。在 LoginController 中,我有以下内容:

def authAjax = {
    session.SPRING_SECURITY_SAVED_REQUEST_KEY = null
    response.sendError HttpServletResponse.SC_UNAUTHORIZED
}

在全局 JavaScript 文件中,我有以下内容:

$.ajaxSetup({
     error: function(xhr, status, err) {
       if (xhr.status == 401) {
         $('#login-dialog').dialog({ // show ajax login });
       }
     }
});

当我在本地运行此程序时,一切都会按预期进行。当我的 session 超时时,我在 FireBug 控制台中看到 401,并且出现登录对话框。当我将其部署到临时服务器时,我只收到 302,而从未进入 authAjax,因此永远不会收到 401。

本地开发和登台之间的主要区别是我使用 mod_proxy 和 apache httpd 来代理来回到 Tomcat 的请求。我的假设是这就是为什么我得到 302 而不是 401,但我不能 100% 确定。

我的问题

  1. mod_proxy 是否导致 302
  2. 如何解决此问题,使其像本地一样工作,但仍使用 mod_proxy。

更新:

根据最近的本地评论,当我收到 401 时,我看到的是:

POST https://localhost:8080/admin/bookProject/edit 302 Moved Temporarily
GET http://localhost:8080/login/authAjax 401 Unauthorized

我看到来自 authAjax 方法的调试

在登台服务器上我得到:

POST https://server.com/admin/bookProject/edit 302 Moved Temporarily

而且我没有看到来自 authAjax 的任何调试,所以我什至没有到达那里。

最佳答案

Ajax 调用代码:

statusCode: {
    401: function(){
        // redirect code to login page
    }
}

关于grails - 本地 401 工作,临时服务器得到 302,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7017756/

相关文章:

java - 具有类路径问题的 grails war 的 Tomcat 部署

grails - Grails中的CommonsMultipartFile

java - Grails 可以从远程目录中读取文件吗?

java - Spring "The request was rejected because the URL was not normalized."如何判断使用了什么 url?

Grails GORM 事件被多次调用

javascript - toggleClass 以显示隐藏的 div - 添加动画和窗口滚动?

javascript - 刷新页面时计时器会自动刷新

jQuery $(this) 语法问题

java - Spring Security 5.3.2 OAuth 2,资源所有者密码凭证流程 - 如何向授权服务器 uri 添加额外的 HEADER 参数

java - Spring Security 自动登录在 IE 浏览器的 iFrame 内不起作用