OmniFaces无扩展名URL和登录重定向

丹尼尔·萨雷

我已经将我的应用程序配置为使用OmniFaces的Extensionless URLs功能,但是由于我启用了安全性,因此web.xml,这些Extensions不会被捕获<security-constraint>

web.xml

<!-- JSF configuration -->

<context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Development</param-value>
</context-param>
<context-param>
    <param-name>javax.faces.FACELETS_SKIP_COMMENTS</param-name>
    <param-value>true</param-value>
</context-param>
<context-param>
    <param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
    <param-value>true</param-value>
</context-param>

<!-- OmniFaces configuration -->

<context-param>
    <param-name>org.omnifaces.FACES_VIEWS_SCAN_PATHS</param-name>
    <param-value>/*.xhtml</param-value>
</context-param>

<!-- Servlets and filters. -->

<servlet>
    <servlet-name>facesServlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>facesServlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>

<!-- Welcome files, error pages and mime types. -->

<welcome-file-list>
    <welcome-file>index.xhtml</welcome-file>
</welcome-file-list>

<!-- Security constraints -->

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Allowed resources</web-resource-name>
        <url-pattern>/javax.faces.resource/*</url-pattern>
    </web-resource-collection>
</security-constraint>
<security-constraint>
    <display-name>SSL transport</display-name>
    <web-resource-collection>
        <web-resource-name>Secure Area</web-resource-name>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>ADMINISTRATOR</role-name>
    </auth-constraint>
    <user-data-constraint>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
</security-constraint>

<!-- Security roles -->

<security-role>
    <role-name>ADMINISTRATOR</role-name>
</security-role>

<!-- Login config -->

<login-config>
    <auth-method>FORM</auth-method>
    <realm-name>myRealm</realm-name>
    <form-login-config>
        <form-login-page>/login.xhtml</form-login-page>
        <form-error-page>/login.xhtml</form-error-page>
    </form-login-config>
</login-config>

login.xhtml

<h:form>
    <h:panelGrid columns="1">
        <h:outputText value="Username:" />
        <h:inputText id="username" required="true"
            value="#{appSession.loginUsername}"
            requiredMessage="Username is required" />
        <h:message for="username" />
        <hr />

        <h:outputText value="Password:" />
        <h:inputSecret id="password" required="true"
            value="#{appSession.loginPassword}"
            requiredMessage="Password is required" />
        <h:message for="password" />

        <h:commandButton value="Login" action="#{appSession.login}" />
    </h:panelGrid>

    <h:messages globalOnly="true" showDetail="false" />
</h:form>

AppSession.java

@SessionScoped
@ManagedBean
public class AppSession {

    private String loginUsername;
    private String loginPassword;

    public AppSession() {   }

    public String login() {
        try {
            Faces.login(loginUsername, loginPassword);

            return "index.xhtml?faces-redirect=true";
        } catch (ServletException e) {
            e.printStackTrace();

            return "login.xhtml";
        }
    }

    public void logout() throws IOException {
        Faces.invalidateSession();
        Faces.redirect("index.xhtml");
    }

    //Getters and setters

}

因此,如果我浏览到index.xhtml,它将正确重定向到login但是,如果我浏览到该目录index,则没有重定向,并且允许浏览器从中下载内容index我知道这正是web.xml由中指定<url-pattern>*.xhtml</url-pattern>,但是我如何配置应用程序,以便无扩展名的URL也受登录限制?

如果我使用<url-pattern>/*</url-pattern>under尝试此操作<security-constraint>,它将成功重定向,但是在这种情况下,我的登录表单不起作用。我必须使用JSF进行程序化登录,因为我想为Web服务重用凭据。有什么想法可以让我得到有效的配置吗?

我在GlassFish 4.1上使用OmniFaces 2.0,Mojarra 2.2.7。

丹尼尔·萨雷

如果添加login添加login.xhtml到允许的资源,则此问题已解决

    <web-resource-collection>
        <web-resource-name>Allowed resources</web-resource-name>
        <url-pattern>/javax.faces.resource/*</url-pattern>
        <url-pattern>/login.xhtml</url-pattern>
        <url-pattern>/login</url-pattern>
    </web-resource-collection>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将外部.php请求重定向到无扩展名的URL

来自分类Dev

.htaccess删除.html并强制重定向到无扩展名的url

来自分类Dev

.htaccess重定向无.html扩展名

来自分类Dev

htaccess重定向索引,无文件扩展名

来自分类Dev

隐藏URL扩展名:重写vs重定向

来自分类Dev

从内容脚本重定向到chrome扩展名URL?

来自分类Dev

使用htm扩展名重定向旧的URL

来自分类Dev

使用OmniFaces FacesView的无扩展名URL在1.12中不起作用

来自分类Dev

.mvc和无扩展名URL的MVC路由

来自分类Dev

将不带扩展名的文件重定向到特定的URL,并忽略带扩展名的文件

来自分类Dev

如何使用Htaccess删除多个文件扩展名并重定向文件扩展名URL

来自分类Dev

删除没有重定向的特定URL的HTML扩展名

来自分类Dev

如何重写URL以删除aspx扩展名并重定向斜杠?

来自分类Dev

htaccess重定向是否url包含语言和文件扩展名?

来自分类Dev

如何使用.htaccess重定向到具有.html扩展名的URL

来自分类Dev

不带.html文件扩展名的URL +相应的重定向+不带斜杠

来自分类Dev

htaccess重定向,如果url包含语言和文件扩展名?

来自分类Dev

如果 url 具有 .html 扩展名,Nginx 不会重定向

来自分类Dev

在Javascript和PHP中没有文件扩展名的页面重定向

来自分类Dev

htaccess重定向隐藏php扩展名或传递参数

来自分类Dev

删除扩展名并使用htaccess重定向

来自分类Dev

htaccess添加更多重定向并隐藏扩展名

来自分类Dev

htaccess重定向隐藏php扩展名或传递参数

来自分类Dev

从Firefox扩展名重定向当前选项卡

来自分类Dev

cat重定向文件,但扩展名可变

来自分类Dev

删除.php扩展名并重定向

来自分类Dev

文件扩展名的 htaccess 重定向规则

来自分类Dev

根目录和子目录的无扩展名URL

来自分类Dev

htaccess重定向到维护页面,并从URL中删除带有扩展名的文件名

Related 相关文章

  1. 1

    将外部.php请求重定向到无扩展名的URL

  2. 2

    .htaccess删除.html并强制重定向到无扩展名的url

  3. 3

    .htaccess重定向无.html扩展名

  4. 4

    htaccess重定向索引,无文件扩展名

  5. 5

    隐藏URL扩展名:重写vs重定向

  6. 6

    从内容脚本重定向到chrome扩展名URL?

  7. 7

    使用htm扩展名重定向旧的URL

  8. 8

    使用OmniFaces FacesView的无扩展名URL在1.12中不起作用

  9. 9

    .mvc和无扩展名URL的MVC路由

  10. 10

    将不带扩展名的文件重定向到特定的URL,并忽略带扩展名的文件

  11. 11

    如何使用Htaccess删除多个文件扩展名并重定向文件扩展名URL

  12. 12

    删除没有重定向的特定URL的HTML扩展名

  13. 13

    如何重写URL以删除aspx扩展名并重定向斜杠?

  14. 14

    htaccess重定向是否url包含语言和文件扩展名?

  15. 15

    如何使用.htaccess重定向到具有.html扩展名的URL

  16. 16

    不带.html文件扩展名的URL +相应的重定向+不带斜杠

  17. 17

    htaccess重定向,如果url包含语言和文件扩展名?

  18. 18

    如果 url 具有 .html 扩展名,Nginx 不会重定向

  19. 19

    在Javascript和PHP中没有文件扩展名的页面重定向

  20. 20

    htaccess重定向隐藏php扩展名或传递参数

  21. 21

    删除扩展名并使用htaccess重定向

  22. 22

    htaccess添加更多重定向并隐藏扩展名

  23. 23

    htaccess重定向隐藏php扩展名或传递参数

  24. 24

    从Firefox扩展名重定向当前选项卡

  25. 25

    cat重定向文件,但扩展名可变

  26. 26

    删除.php扩展名并重定向

  27. 27

    文件扩展名的 htaccess 重定向规则

  28. 28

    根目录和子目录的无扩展名URL

  29. 29

    htaccess重定向到维护页面,并从URL中删除带有扩展名的文件名

热门标签

归档