显示欢迎页面而不会重定向到登录页面

时间:2012-02-24 11:41:46

标签: jsf j-security-check

我有以下web.xml文件我将欢迎页面保存到安全检查中,这样它就会重定向到登录页面,但显示的欢迎页面没有用户登录。这是正确的方法吗? enter image description here

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

    <resource-ref>
        <res-ref-name>jdbc/Gis_WebApp</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>


    <security-constraint>
        <web-resource-collection>
            <web-resource-name>Protected Pages</web-resource-name>
            <url-pattern>/GISPages/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>registereduser</role-name>
            <role-name>admin</role-name>
        </auth-constraint>
    </security-constraint>

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

    <security-role>
        <role-name>registereduser</role-name>
    </security-role>

    <security-role>
        <role-name>admin</role-name>
    </security-role> 

1 个答案:

答案 0 :(得分:1)

安全约束保护URL模式,但在这种情况下,由于欢迎文件设置,您的默认URL将更改为http://:port / webcontext /,并且将显示welcome.xhtml。根据定义的URL模式,受保护的URL应具有类似http://:port / webcontext / GISPages / welcome.xhtml的URL 由于URL模式与应用程序服务器不匹配,因此呈现页面内容。

只有对我有用的解决方案是在prerender事件中检查UserPrincipal

<f:event type="preRenderComponent"
listener="#{bean.forwardToLoginIfNotLoggedIn}" /> 
如果UserPrincipal返回null,则

并重定向到login.xhtml。

打开旧帖子的道歉。我最近遇到了类似的问题,因此认为这可能对某些人有用。