Spring security - nie można się zalogować

0

Witam

Mam problem z Spring security, cały czas wraca do formularza logowania, mimo, że podane dane są poprawne. Brakuje mi już pomysłu co może być nie tak.

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
             xmlns:beans="http://www.springframework.org/schema/beans"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
            http://www.springframework.org/schema/security
            http://www.springframework.org/schema/security/spring-security.xsd">

    <http use-expressions="true">
        <form-login login-page="/login"
                    default-target-url="/"
                    always-use-default-target="true"
                    authentication-failure-url="/login"/>

        <logout
                logout-success-url="/logout"
                logout-url="/perform_logout"
                delete-cookies="JSESSIONID" />

    </http>

    <authentication-manager>
        <authentication-provider>
            <!--<password-encoder hash="bcrypt"/>-->
            <jdbc-user-service data-source-ref="dataSource"
                               authorities-by-username-query="SELECT user.login, role.name FROM user
                        JOIN user_role on user.id = user_role.users_id
                        JOIN role on user_role.roles_id = role.id
                        WHERE user.login = ?"
                               users-by-username-query="SELECT login,password FROM user WHERE login = ?"/>
        </authentication-provider>
    </authentication-manager>

</beans:beans> 

web.xml

<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
		 						 http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

	<display-name>Project Manager</display-name>

	<!-- Spring Context locations -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath*:/spring/spring-*.xml</param-value>
	</context-param>

	<!-- Spring MVC Dispatcher Servlet -->
	<servlet>
		<servlet-name>DispatcherServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>
				/WEB-INF/spring/mvc-dispatcher-servlet.xml
			</param-value>
		</init-param>
	</servlet>

	<servlet-mapping>
		<servlet-name>DispatcherServlet</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>

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

	<!-- Spring Security Filter -->
	<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>

	<!--UTF-8-->
	<filter>
		<filter-name>characterEncodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
		<init-param>
			<param-name>forceEncoding</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>
	<filter-mapping>

		<filter-name>characterEncodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<context-param>
		<param-name>defaultHtmlEscape</param-name>
		<param-value>true</param-value>
	</context-param>

	<context-param>
		<param-name>spring.profiles.default</param-name>
		<param-value>dev</param-value>
	</context-param>
</web-app> 
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>

<form class="form-signin" role="form" action="/j_spring_security_check" method="POST">
    <h2 class="form-signin-heading"></h2>
    <input type="text" name="j_username" class="form-control" placeholder="Login" required autofocus>
    <input type="password" name="j_password" class="form-control" placeholder="Password" required>
    <button class="btn btn-lg btn-primary btn-block" type="submit">Zaloguj</button>
</form>
 

Dołączam screen z polami z bazy.screen.PNG

0

A jakie logi są wyświetlane jak się wraca do formularza logowania?

0

@Marszal w sumie jest to:
2016-01-11 1851 DEBUG SecurityContextPersistenceFilter:97 - SecurityContextHolder now cleared, as request processing completed i dalej cały czas przekierowuje na stronę logowania mimio podania dobrego loginu i hasła.

0

A co pojawi po zmianie parametru default-target-url="/" na jakąś stronę np. default-target-url="/welcome.jsp" ?

0

Po zmianie na inną stronę np. /hello.jsp dalej nie przekierowuje nigdzie i wraca do logowania.

0

Udało mi się ustalić, że zapytania SQL security wpisane w workbenchu wybierają odpowiedniego uzytkownika i jego rolę, jest jakaś możliwość żeby podpatrzyć co dokładnie security wysyła i ściąga z bazy? I druga rzecz, okazało się że security przekierowuje na /login ponieważ mimo podania dobrych danych logowanie nie następuje.

0

Wklej tutaj wszystkie logi swojego kontenera/serwera.

0

Udało mi się rozwiązać problem po włączeniu debugowania i sprawdzeniu co wysyła i otrzymuje security, problem leżał w zapytaniu SQLowym. Już jest rozwiązany :) Ale dzięki za pomoc

1 użytkowników online, w tym zalogowanych: 0, gości: 1