0

共享如何知道用户未连接(并将他重定向到登录页面)?

即使用户已连接,我也想检查他是否有一些权限,如果没有,则将他重定向到登录页面。所以我想知道 Share 如何从会话中管理经过身份验证的用户。

我可以使用过滤器、侦听器、servlet 或任何其他机制来拦截共享上的所有 url 并检查连接的用户是否需要权限。

我正在使用露天 5.0.d。

预先感谢您的帮助。

4

1 回答 1

2

根据所使用的身份验证方法和访问的 Share 服务(页面、代理 servlet 或 Web 脚本),有多个地方对当前用户进行检查:

  • 类 SSOAuthenticationFilter - 一个 servlet 过滤器,处理其名称中所说的内容,单点登录 (SSO),例如 Kerberos、NTLM 或 CAS / 外部身份验证
  • 类 PageView - Surf 框架的一部分,用于检查当前用户是否具有当前页面所需的权限(由页面 XML 定义定义的访客、用户、管理员的有限区分)
  • class SlingshotPageView - PageView 类的增强/特化
  • 类 EndpointProxyServlet - 处理通过 Share 代理的任何后端 ReST API 调用的身份验证
  • 类 PresentationContainer 和 Authenticator 接口的实例 - 处理对正常页面再现周期之外的任何 Web 脚本的直接调用

从技术上讲,您可以使用过滤器来拦截 Share 上的所有 servlet 调用,但从维护的角度来看,它并不理想(web.xml 不易扩展并在升级时被覆盖)。如果您只对页面呈现请求感兴趣,您可以使用Surf 扩展模块来注入能够在缺少用户权限时生成重定向响应的后处理代码。通过根范围的“状态”对象,您可以发送 HTTP 重定向响应并定义目标位置。

于 2015-12-04T16:20:41.137 回答