如何从自定义CAS AuthenticationHandler访问HttpServletResponse以生成cookie?在

时间:2014-01-29 15:04:56

标签: cookies cas

我的JBOSS 4中安装了CAS 3.5.2和欢迎Web应用程序。

我通过实现接口编写了自定义AuthenticationHandler:

org.jasig.cas.authentication.handler.AuthenticationHandler。

我的AuthenticationHandler正确验证,但如果验证正确,我想生成一个带有response.addCookie方法的cookie。所以我需要访问HttpServletResponse。问题是我在authenticate方法中收到的唯一信息是[Credentials credentials]参数。

我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

实际上,身份验证处理程序仅将凭据作为输入参数。但是,您可以使用ExternalContextHolder对象(来自SpringWebflow)获取ServletExternalContext,从中获取HttpServletRequest ...

答案 1 :(得分:1)

最后我找到了2个解决方案。

首先,我在web xml中添加了一个过滤器,它将响应放在ThreadLocal中,并从AuthenticationHandler中检索。

有一天,寻找另一件事我找到了一个更简单的方法:

HttpServletResponse res = WebUtils.getHttpServletResponse(RequestContextHolder.getRequestContext());

我希望它对其他人有用。