在使用框架组合的同时获得会话的正确方法

时间:2014-01-15 13:47:24

标签: spring jsf session spring-security jsf-2.2

我有一个使用的网络应用程序,

  • Spring Framework 4.0 RELEASE(GA)
  • Spring Security 3.2.0 RELEASE(GA)
  • 由Hibernate 4.2.7 final提供的JPA 2.0
  • Mojarra 2.2.5
  • PrimeFaces 4.0 final
  • PrimeFaces Extension 1.1.0
  • OmniFaces 1.6.3

我有一个关于在使用Spring Security时获取会话的问题。假设bean由Spring管理。

可以使用Spring Security获取用户会话,如下所示。

RequestAttributes currentRequestAttributes = RequestContextHolder.currentRequestAttributes();
currentRequestAttributes.getAttribute("attributeName", RequestAttributes.SCOPE_SESSION);

ServletRequestAttributes servletRequestAttributes=(ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
servletRequestAttributes.getAttribute("attributeName", ServletRequestAttributes.SCOPE_SESSION);

甚至

ServletRequestAttributes servletRequestAttributes=(ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
HttpSession session = servletRequestAttributes.getRequest().getSession();
session.getAttribute("attributeName");

或者如果它单独是Spring MVC,它可以简单地像

那样获得
request.getSession().getAttibute("attributeName")

在Spring控制器中。


如果用户会话以JSF方式公开,会发生什么?如下所示?

ExternalContext context = FacesContext.getCurrentInstance().getExternalContext();
HttpSession session = (HttpSession) context.getSession(true);
Object attribute = session.getAttribute("attributeName");

Spring Security是否可以控制会话?

在使用这样的框架组合时获取用户会话的正确方法是什么?这是实验性的(或多或少)。

免责声明:)

0 个答案:

没有答案