应用Spring安全配置后,是否没有发生成功页面重定向?

时间:2018-02-09 13:34:44

标签: spring spring-mvc spring-security

我正在尝试将spring security login config应用到我的应用程序,但在应用配置时我无法重定向到成功页面

abc_security_config.xml

Array
(
    [0] => Value1
    [1] => Value2
)

Web.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:jee="http://www.springframework.org/schema/jee"
    xmlns:lang="http://www.springframework.org/schema/lang"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:util="http://www.springframework.org/schema/util"
    xmlns:s="http://www.springframework.org/schema/security"
    xsi:schemaLocation="http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd
        http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <s:global-method-security pre-post-annotations="enabled" secured-annotations="enabled" proxy-target-class="true"/>

    <s:http auto-config="true"  use-expressions="true">
        <s:intercept-url pattern="/login" access="permitAll"></s:intercept-url>
        <s:intercept-url pattern="/logout" access="permitAll"></s:intercept-url>
        <s:intercept-url pattern="/accessdenied" access="permitAll"></s:intercept-url>
        <s:intercept-url pattern="/**" access="hasRole('ROLE_USER')"></s:intercept-url>
        <!-- <s:form-login login-page="/login" default-target-url="/list" authentication-failure-url="/accessdenied"></s:form-login> -->
        <s:form-login login-page="/login" authentication-success-forward-url="/home"  default-target-url="/home" authentication-failure-url="/login.html?error=true"></s:form-login> 

        <s:logout logout-success-url="/logout" delete-cookies="JSESSIONID"></s:logout>
        <s:csrf/>
    </s:http>
    <s:authentication-manager alias="authenticationManager">
        <!-- <s:authentication-provider user-service-ref="customPreAuthUserDetailsService" /> -->
        <s:authentication-provider>
            <s:user-service>
                <s:user name="abc" password="test" authorities="ROLE_USER" />
            </s:user-service>
        </s:authentication-provider>
    </s:authentication-manager>
</beans>

UserController.java

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    id="WebApp_ID" version="3.0">
    <display-name>Archetype Created Web Application</display-name>


    <servlet>
        <servlet-name>recon</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>
                /WEB-INF/configuration/abc-servlet.xml
                /WEB-INF/configuration/abc_security_config.xml
            </param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>recon</servlet-name>
        <url-pattern>/</url-pattern>
        <!-- <url-pattern>/recon/*</url-pattern> -->
    </servlet-mapping>
    <!-- Spring Servlet Configuration : END --> 
    <!-- Spring Security : Start -->
    <filter>
        <filter-name>springSecurityFilterChain</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>springSecurityFilterChain</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!-- Spring Security : End -->
    <context-param>
        <param-name>defaultHtmlEscape</param-name>
        <param-value>true</param-value>
    </context-param>    
    <welcome-file-list>
        <welcome-file>/index.jsp</welcome-file>
    </welcome-file-list>
    <session-config>
        <session-timeout>5</session-timeout>
    </session-config>

</web-app>

Login.jsp (它在@Controller //@RequestMapping(value = "/user") public class UserController { private final Logger logger = LoggerFactory.getLogger(UserController.class); @Resource(name = "userService") private UserService usrService; @RequestMapping(value = "/login", method = RequestMethod.GET) public String login(ModelMap model) { System.out.println("::::::::::Controller Login::::::::::"); return "login"; } @RequestMapping(value = "/", method = RequestMethod.GET) public String defaultPage(ModelMap map) { return "redirect:/home"; } @RequestMapping(value = "/home", method = RequestMethod.GET) public String listEmployees(ModelMap map) { return "home"; } @RequestMapping(value = "/logout", method = RequestMethod.GET) public String logout(ModelMap model) { return "logout"; } } 中配置为图块定义)

tiles.xml
  1. 当我输入正确的用户名和密码时,它会重定向到同一页面。
  2. 我观察到的另一件事是,在Eclipse控制台上,我得到Print语句<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %> <%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %> <html> <body> <h1 id="banner">Login to Security Demo test</h1> <form name="f" action="<c:url value='j_spring_security_check'/>" method="POST"> <table> <tr> <td>Username:</td> <td><input type='text' name='j_username' /></td> </tr> <tr> <td>Password:</td> <td><input type='password' name='j_password'></td> </tr> <tr> <td colspan="2">&nbsp;</td> </tr> <tr> <td colspan='2'><input name="submit" type="submit">&nbsp;<input name="reset" type="reset"></td> </tr> </table> <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" /> </form> </body> </html> 6次而不是1次。
  3. 我缺少任何配置吗?

0 个答案:

没有答案