【问题标题】:alfresco share check authentication露天共享检查身份验证
【发布时间】:2015-12-04 11:50:40
【问题描述】:

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

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

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

我正在使用 alfresco 5.0.d.

提前感谢您的帮助。

【问题讨论】:

    标签: authentication share alfresco disconnected


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢亚历克斯。我想通过覆盖 SSOAuthenticationFilter 来实现我的逻辑(我可以看到所有 http 调用都通过这个过滤器)。我想测试用户是否在 doFilter 方法的开头具有特定权限,如果没有则重定向用户。我可以看到重定向已完成(在 Firefox 地址栏中我可以看到 localhost:8080/share/page?pt=login&error=true )但无法显示登录页面。我找不到原因。你知道这个问题吗?
    • 第一次调用的SSO AuthenticationFilter 中doFilter 的开头还不能识别用户,所以权限检查总是会失败。如果您想使用过滤器,我建议您编写一个自定义过滤器,将其放在 SSO 过滤器之后,并检查是否请求了页面,并且在执行权限检查之前用户已经通过身份验证。这样您就不会中断登录正确显示所需的任何处理。
    • 嗨,我的问题是如何编写这样的过滤器?
    • 嗨我的问题是如何编写这样的过滤器?我可以编写任何具有全局过滤器映射 (/*) 的过滤器吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    • 2011-11-23
    • 2011-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多