Spring Security登录表单

时间:2013-09-27 07:41:40

标签: java spring spring-security

我需要你的帮助。我需要使用Spring Security的默认登录表单。当我启动webapp时,它应该打开登录页面,并在成功登录后将用户重定向到我的jsp页面,而不需要查看角色(admin或只是用户)。我试过这个:

<http auto-config="true" create-session="stateless"
    use-expressions="true">
    <intercept-url pattern="/_ah*" access="permitAll" />
    <intercept-url pattern="/pages/*" access="hasRole('ROLE_ADMIN')" />
    <intercept-url pattern="/index*" access="hasRole('ROLE_ADMIN')" />
</http>

<authentication-manager>
    <authentication-provider>
        <jdbc-user-service data-source-ref="dataSource"
            users-by-username-query="working_sql_script"
            authorities-by-username-query="other_working_sql_script" />
    </authentication-provider>
</authentication-manager>

但它在开始时打开空白页面,我需要在浏览器中输入登录页面:http://webapp/spring_security_login。我如何配置它以在启动时打开登录页面并在登录后重定向到我的JSP?另外,我在web.xml中写道

<welcome-file-list>
    <welcome-file>/WEB-INF/pages/index.jsp</welcome-file>
</welcome-file-list>

但它仍然在开始时打开空白页。

2 个答案:

答案 0 :(得分:2)

您需要在应用程序中定义一个页面而不限制角色。并将该页面设置为默认的表单登录。在身份验证成功重定向到其他页面。

我的spring-security.xml部分代码如下

 <http pattern="/login" security="none"/>
<http pattern="/accessDenied" security="none"/>
<http auto-config="true">
    <remember-me/>
    <!-- Don't set any role restrictions on login.jsf -->
    <intercept-url pattern="/login" access="IS_AUTHENTICATED_ANONYMOUSLY" />
    <intercept-url pattern="/pages/admin/*" access="ROLE_SADMIN" />
    <intercept-url pattern="/pages/applicants/*" access="ROLE_SADMIN,ROLE_APPLICANT" />

    <!-- Set the login page and what to do if login fails -->
    <form-login login-page="/login" authentication-failure-url="/login"
                default-target-url="/manageHome" authentication-success-handler-ref="customAuthenticationSuccessHandler"/>

    <logout success-handler-ref="customLogoutSuccessHandler" />
    <access-denied-handler ref="customAccessDeniedHandler"/>

</http>

答案 1 :(得分:0)

感谢所有,他们试图帮助我。我解决了这个问题。并为将面临此类问题的其他开发人员撰写此文章。我创建了欢迎页面,可以访问所有用户并匿名访问。页面代码:

<a href="index">Catalog</a>
<br>
<a href="registration">Registration</a>

我的spring-security文件包含:

<http auto-config="true" create-session="stateless"
    use-expressions="true">
    <intercept-url pattern="/welcome" access="isAnonymous()" />
    <intercept-url pattern="/registration" access="isAnonymous()" />
    <intercept-url pattern="/index" access="isAuthenticated()" />
    <form-login default-target-url="/main"/>
</http>

和受保护的主页:

<h2>Catalog</h2>
<a href="logout">Logout</a>
<a href="goods">Goods</a>
<a href="vendors">Vendors</a>

Spring Security仅允许在登录后访问此页面。 Spring Security生成的登录页面。希望,这对某人有帮助。