-1

Я использую весеннюю безопасность в своем приложении, где я перехватываю некоторые URL-адреса для аутентификации. Хотя URL «/ secureMapping1» предлагает пользователю войти в систему, указав страницу входа в систему, однако вход в систему не работает. Даже если я дам правильные учетные данные, я возвращаюсь на страницу входа с Ошибка «Bad credentials» путем вызова URL-адреса для неудачной аутентификации, то есть authentication-failure-url = "/ login? Error = true" называется каждый независимо от правильных/неправильных учетных данных. Может ли кто-нибудь помочь мне разобраться, что происходит не так? Ниже приведен код из важных файлов:Spring Security - проверка подлинности не работает, даже учетные данные верны

web.xml

<?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" 
    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"> 

    <servlet> 
     <servlet-name>spring-sec</servlet-name> 
     <servlet-class> 
      org.springframework.web.servlet.DispatcherServlet 
     </servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet>  

    <servlet-mapping> 
     <servlet-name>spring-sec</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 

    <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> 

    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/spring-sec-servlet.xml</param-value> 
    </context-param> 

    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 
</web-app> 

весна-втор-servlet.xml

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:p="http://www.springframework.org/schema/p" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:mvc="http://www.springframework.org/schema/mvc" 
    xmlns:security="http://www.springframework.org/schema/security" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-4.1.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-4.1.xsd 
    http://www.springframework.org/schema/mvc 
    http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd 
    http://www.springframework.org/schema/security 
    http://www.springframework.org/schema/security/spring-security-4.0.xsd"> 

    <context:component-scan base-package="com.mir.*" /> 
    <context:annotation-config /> 
    <bean  class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="prefix"><value>/WEB-INF/pages/</value></property> 
     <property name="suffix"><value>.jsp</value></property>   
    </bean> 

    <security:http auto-config="true" use-expressions="true"> 
    <security:intercept-url pattern="/securedMapping1" access="hasRole('ROLE_ADMIN')"/> 

    <security:intercept-url pattern="/" access="permitAll" /> 
    <security:intercept-url pattern="/hello" access="permitAll" /> 
    <security:form-login login-page="/login" 
     login-processing-url="/j_spring_security_check" 
     default-target-url="/dashboard" 
     authentication-failure-url="/login?error=true"/> 
    <security:logout logout-success-url="/logout" /> 
    </security:http> 

    <security:authentication-manager> 
    <security:authentication-provider> 
     <security:user-service> 
      <security:user name="admin" password="test123" authorities="ROLE_ADMIN" /> 
     </security:user-service> 
    </security:authentication-provider> 
    </security:authentication-manager> 
</beans> 

MyAppController.java

@Controller 
public class MyAppController { 

    public MyAppController() { 
     System.out.println("Constructor..."); 
    } 

    @RequestMapping("/hello") 
    public String hello(Model model) { 
     model.addAttribute("greeting", "Hello Guest"); 
     return "helloworld"; 
    } 

    @RequestMapping("/securedMapping1") 
    public String method1(Model model) { 
     model.addAttribute("greeting", "Hello "+getPrincipal()+ ", --> Accessed via secured URL."); 
     return "helloworld"; 
    } 

    @RequestMapping("/dashboard") 
    public String method2(Model model) { 
     model.addAttribute("greeting", "Hello --- DEFAULT TARGET URL ---"); 
     return "helloworld"; 
    } 

    @RequestMapping("/login") 
    public String method3(Model model) { 
     System.out.println(" Going to display Login page..."); 
     return "login"; 
    } 

// Logout page 
@RequestMapping(value="/logout", method = RequestMethod.GET) 
public String logout(ModelMap model) { 
    return "login"; 
} 
} 

login.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Spring4Sec MVC</title> 
</head> 
<body> 
    <h1>Login</h1> 

    <c:if test="${not empty param.error}"> 
    <font color="red"> 
     Login Error <br/> 
     Reason: "${sessionScope["SPRING_SECURITY_LAST_EXCEPTION"].message}" <br/> 
     User: <c:out value="${SPRING_SECURITY_LAST_USERNAME}"/> 
    </font> 
    </c:if> 

    <form action="<c:url value="/j_spring_security_check"/>" method="post"> 
     <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/> 
     user: <input type="text" name="j_username"/> 
     password: <input type="password" name="j_password"/> 
     <input type="submit" value="Login"> 
    </form> 
</body> 
</html> 

helloworld.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Spring4Sec MVC</title> 
</head> 
<body> 
    <h1>${greeting}</h1> 
    <a href="<c:url value="/securedMapping1" />">Secure</a> 
</body> 
</html> 
+0

Пятно, и это работало как шарм. Большое вам спасибо @dur. Некоторое время я был невежественным. И вот измененная часть кода из ** login.jsp **: 'user: \t пароль: ' – JavaYouth

ответ

1

См Spring Security reference:

- пароль параметр Имя тростно параметр квеста, который содержит пароль. По умолчанию «пароль».

- username-parameter Имя параметра запроса, который содержит имя пользователя. По умолчанию используется «имя пользователя».