首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结合使用PrettyFaces和PicketLink

结合使用PrettyFaces和PicketLink
EN

Stack Overflow用户
提问于 2016-07-25 18:03:13
回答 1查看 98关注 0票数 1

当使用PrettyFaces/Rewrite重写JSF应用程序中的URL并使用PicketLink保护它时,PicketLink似乎不使用重写规则。

例如,如果我使用以下内容配置PicketLink:

代码语言:javascript
复制
builder
    .http()
        .allPaths()
            .authenticateWith()
                .form()
                    .loginPage("/common/login.xhtml")

重写规则如下:

代码语言:javascript
复制
<url-mapping id="login">
    <pattern value="/login" />
    <view-id value="/common/login.xhtml" />
</url-mapping>

用户将被重定向到/common/login.xhtml,而不是/login

我知道我可以在PicketLink中使用/login作为loginPage,但是到目前为止,我已经能够在我的应用程序中以一种完全透明的方式使用PrettyFaces/Rewrite (我可以删除它,一切仍然可以工作……但是带有丑陋的URL)。

我注意到来自PicketLink的SecurityFilter似乎先于来自PrettyFaces/Rewrite的RewriteFilter

代码语言:javascript
复制
    at org.ocpsoft.rewrite.servlet.impl.HttpRewriteResultHandler.handleResult(HttpRewriteResultHandler.java:41)
    at org.ocpsoft.rewrite.servlet.RewriteFilter.rewrite(RewriteFilter.java:268)
    at org.ocpsoft.rewrite.servlet.RewriteFilter.doFilter(RewriteFilter.java:188)
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60)
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
    at org.picketlink.http.internal.SecurityFilter.processRequest(SecurityFilter.java:346)
    at org.picketlink.http.internal.SecurityFilter.performOutboundProcessing(SecurityFilter.java:237)
    at org.picketlink.http.internal.SecurityFilter.doFilter(SecurityFilter.java:196)

因此,如果PrettyFaces以某种方式包装HttpServletResponse以覆盖encodeRedirectUrl()SecurityFilter将不会像以前那样看到这个包装的响应。

有没有办法让RewriteFilter排在SecurityFilter之前

我没有在我的部署描述符中声明这些过滤器,它们是通过PrettyFaces的web-fragment.xml和PicketLink的@WebListener自动注册的。

EN

回答 1

Stack Overflow用户

发布于 2016-07-26 00:33:50

您可以尝试在web.xml中添加一个absolute-ordering元素来控制顺序。类似于:

代码语言:javascript
复制
<web-app> 
    ... 
    <absolute-ordering> 
        <name>com_ocpsoft_rewrite</name> 
        <others/> 
    <absolute-ordering> 
    ...
</web-app>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38564805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档