如何使用spring security显示hide元素

时间:2013-08-09 14:32:50

标签: spring spring-security

我想在登录页面显示一个按钮。

因此,当用户登录时,我想隐藏此按钮。我想

<sec:authorize access="isAuthenticated()">

对此有用,所以我在jsp

中包含了类似的内容
<sec:authorize access="not isAuthenticated()">
            <div class="pull-right">

但在登录页面和登录后都不可见。

可能是什么问题。

<http pattern="/foobar/static-wro4j/**" security="none"/>
<http pattern="/foobar/static/**" security="none"/>
<http pattern="/foobar/login*" security="none"/>
<http pattern="/foobar/syndic/**" security="none"/>
<http pattern="/foobar/register/**" security="none"/>
<http pattern="/foobar/lostpassword/**" security="none"/>

<http auto-config="true" use-expressions="true" create-session="ifRequired">
    <remember-me key="foobarRememberKey" token-validity-seconds="2592000"/>
    <intercept-url pattern="/foobar/presentation" access="permitAll()"/>
    <intercept-url pattern="/foobar/tos" access="permitAll()"/>
    <intercept-url pattern="/foobar/license" access="permitAll()"/>
    <intercept-url pattern="/foobar/404-error" access="permitAll()"/>
    <intercept-url pattern="/foobar/500-error" access="permitAll()"/>
    <intercept-url pattern="/foobar/rest/users" method="POST" access="permitAll()"/>
    <intercept-url pattern="/metrics/**" access="hasRole('ROLE_ADMIN')"/>
    <intercept-url pattern="/**" access="isAuthenticated()"/>

    <form-login
            login-processing-url="/foobar/authentication"
            login-page="/foobar/login"
            authentication-failure-url="/foobar/login?action=loginFailure"
            default-target-url="/foobar/"
            authentication-success-handler-ref="foobarAuthenticationSuccessHandler"/>
    <http-basic/>
    <logout logout-url="/foobar/logout"
            logout-success-url="/foobar/login"/>

    <openid-login authentication-failure-url="/foobar/login?action=loginFailure"
                  user-service-ref="openIdAutoRegisteringUserDetailsService">
        <!-- Only Google Apps is supported -->
        <attribute-exchange identifier-match="https://www.google.com/.*">
            <openid-attribute name="email" type="http://axschema.org/contact/email" required="true" count="1"/>
            <openid-attribute name="firstname" type="http://axschema.org/namePerson/first" required="true"/>
            <openid-attribute name="lastname" type="http://axschema.org/namePerson/last" required="true"/>
        </attribute-exchange>
    </openid-login>
</http>

1 个答案:

答案 0 :(得分:6)

确保已在JSP中包含Spring Security标记库:

<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>

在您的安全配置中包括:

<beans:bean class="org.springframework.security.web.access.expression.DefaultWebSecurityExpressionHandler"/>

然后使用authorize标记:

<sec:authorize access="isAuthenticated()">
   <!-- Content for Authenticated users -->  
</sec:authorize>

<sec:authorize access="isAnonymous()">
   <!-- Content for Unauthenticated users -->  
</sec:authorize>