【问题标题】:Changing default session behavior in tapestry更改挂毯中的默认会话行为
【发布时间】:2013-05-20 20:42:37
【问题描述】:

我目前正在使用 shiro 和 Tapestry-security 插件来管理本机会话和持久化数据。通过SecurityUtils.getSubject().getSession() 获取会话时一切正常。然而,这意味着应用程序中充斥着特定于 shiro 的代码片段。由于 shiro 使用 servlet session API,有没有办法以对应用程序透明的方式执行此操作,并且希望仍然允许我使用 @Persist@SessionState 之类的注释?

【问题讨论】:

    标签: tapestry


    【解决方案1】:

    我可能误解了您的问题,但您可以注入请求并使用它来获取会话句柄:

    @Inject
    private HttpServletRequest httpRequest;
    
    httpRequest.getSession();
    

    这不会阻止您使用@Persist@SessionState

    【讨论】:

    • 我的问题是我根本不想使用 servlet httpSessions。不过现在解决了,谢谢。
    【解决方案2】:

    我装饰了 TapestrySessionFactory 以返回一个 shiro 会话,而不是包装的 HttpServletSession。接口不相同,因此需要一个(非常)简单的强制函数。我得到了我所需要的:唯一与 shiro 相关的代码由 AppModule 中的几行代码和一个将 org.apache.shiro.session.Session 转换为 org.apache.tapestry5.services.Session 的隔离函数组成。在应用程序的其余部分中,我像以前一样使用会话设施(包括注释),它们都由 shiro 在幕后管理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-28
      • 2020-07-24
      • 2012-01-29
      • 1970-01-01
      • 2016-07-29
      • 1970-01-01
      • 1970-01-01
      • 2012-06-30
      相关资源
      最近更新 更多