我有一个graace(v1.2.1)应用程序,使用acegi插件(v0.5.2)对Active Directory域进行用户身份验证。
只要我使用“grails run-app”来运行应用程序,一切都可以完美运行;正确的 Controller /操作受到保护,用户可以成功登录,而不必在每个页面请求上登录等等。
当我在Weblogic 10.3中将应用程序作为 war 来运行时,整个过程崩溃了。正确的 Controller /操作需要身份验证,但是成功登录后,总是将用户发送到defaultTargetUrl而不是其最初请求的URL。成功登录后,如果我尝试返回刚刚导致我登录的 protected 页面,它将要求再次登录(这无济于事,因为成功登录仍会将我发送到defaultTargetUrl)。如果我有意在登录页面上输入错误的用户名/密码,则会按照设计将我发送回登录页面,但不会显示验证消息。
我添加了一些日志记录/完成了一些调试,并确定了以下内容:
[org.springframework.security.context.HttpSessionContextIntegrationFilter,
org.codehaus.groovy.grails.plugins.springsecurity.FixRedirectLogoutFilter,
org.codehaus.groovy.grails.plugins.springsecurity.GrailsAuthenticationProcessingFilter,
org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter,
org.springframework.security.ui.rememberme.RememberMeProcessingFilter,
org.springframework.security.providers.anonymous.AnonymousProcessingFilter,
org.springframework.security.ui.ExceptionTranslationFilter]
最佳答案
解决了。
如果您看到这样的行为,请检查您的cookie。我的浏览器对本地主机有几个“JSESSIONID” cookie。其中两个JSESSIONID的路径与我的应用程序的路径匹配(一个用于路径“/”,一个用于我的应用程序路径。
浏览器正在HTTP header 中发送两个匹配的JSESSIONID。 header 中的第一个JSESSIONID不是刚刚设置的,因此我的应用程序认为请求不是同一 session 的一部分。因此,所有 session 属性的丢失。特别是与登录相关的。
关于grails - 为什么grails的acegi插件在weblogic中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2283800/