-1

Ich benutze Federsicherheit in meiner Anwendung, wo ich einige URLs für die Authentifizierung abfangen. Obwohl die URL "/ securedMapping1" den Benutzer zur Anmeldung auffordert, indem er die Anmeldeseite anzeigt, funktioniert die Anmeldung jedoch nicht. Selbst wenn ich die korrekten Anmeldeinformationen gebe, gehe ich zurück zur Anmeldeseite mit "Bad credentials" Fehler durch Aufrufen der URL für die fehlgeschlagene Authentifizierung dh authentication-failure-url = "/ login? Error = true" wird jeder aufgerufen Zeit unabhängig von korrekten/falschen Anmeldeinformationen. Kann mir jemand helfen, herauszufinden, was schief läuft? Unten ist der Code von wichtigen Dateien:Spring Security - Authentifizierung funktioniert nicht, auch die Anmeldeinformationen sind korrekt

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> 

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

Spot auf und es funktionierte wie ein Charme. Vielen Dank @dur. Ich war für einige Zeit ahnungslos geworden. Und hier ist der modifizierte Code Teil von ** login.jsp **: 'user: \t passwort: ' – JavaYouth

Antwort

1

Siehe Spring Security reference:

- Passwort-Parameter Der Name des Wieder Quest-Parameter, der das Passwort enthält. Standardmäßig auf "Passwort" eingestellt.

- Benutzername-Parameter Der Name des Anfrage-Parameters, der den Benutzernamen enthält. Der Standardwert ist "Benutzername".

Verwandte Themen