web-dev-qa-db-fra.com

Printemps 3 Sécurité j_spring_security_check

J'essaie de comprendre le fonctionnement de la sécurité printanière. J'ai donc téléchargé un exemple de projet, puis essayé d'implémenter cette solution dans mon projet. Mais lorsque j'essaie de me connecter, j'obtiens l'erreur 404 et, dans une barre d'adresse, j'ai http://localhost:8080/fit/j_spring_security_check. J'ai essayé de regarder des questions similaires ici, mais je n'ai pas pu comprendre comment l'appliquer à mon projet. Je serais vraiment reconnaissant si quelqu'un plus expérimenté pouvait m'aider.

Ma structure d'application ressemble à ceci:

enter image description here

applicationContext.xml:

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

<context:annotation-config/>

<context:component-scan base-package="cz.cvut.fit"/>

<import resource="classpath:applicationContext-security.xml"/>

</beans>

applicationContext-web.xml:

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

<context:annotation-config/>

<context:component-scan base-package="cz.cvut.fit" />

<mvc:annotation-driven />

<security:global-method-security jsr250-annotations="enabled"
                                 proxy-target-class="true"/>
</beans>

applicationContext-security.xml:

<beans xmlns:security="http://www.springframework.org/schema/security"
   xmlns="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-3.1.xsd">

<security:http pattern="/css/**" security="none"/>
<security:http pattern="/views/login.jsp*" security="none"/>
<security:http pattern="/views/denied.jsp" security="none"/>

<security:http auto-config="true" access-denied-page="/denied.jsp" servlet-api-provision="false">
    <security:intercept-url pattern="/views/login.jsp*" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
    <security:intercept-url pattern="/views/edit/**" access="ROLE_EDIT"/>
    <security:intercept-url pattern="/views/admin/**" access="ROLE_ADMIN"/>
    <security:intercept-url pattern="/**" access="ROLE_USER"/>
    <security:form-login login-page="/views/login.jsp" authentication-failure-url="/denied.jsp"
                         default-target-url="/home.jsp"/>
    <security:logout/>
</security:http>

<security:authentication-manager>
    <security:authentication-provider>
        <security:user-service>
            <security:user name="adam" password="adampassword" authorities="ROLE_USER"/>
            <security:user name="jane" password="janepassword" authorities="ROLE_USER, ROLE_ADMIN"/>
            <security:user name="sue" password="suepassword" authorities="ROLE_USER, ROLE_EDIT"/>
        </security:user-service>
    </security:authentication-provider>
</security:authentication-manager>

</beans>
12
Martin Dvoracek

Vous essayez de valider un uri en fonction du chemin de contexte actuel de la page Web. La balise JSTL lib peut être utilisée pour vous assurer de générer facilement les URL correctes en fonction du contexte de l'application. Vous pouvez le faire en utilisant une bibliothèque de balises si vous souhaitez l’implémenter rapidement. Pour ce faire, vous pouvez ajouter la bibliothèque de balises jstl en haut de jsp:

<%@ taglib prefix="c" uri="http://Java.Sun.com/jsp/jstl/core" %>

Vous pouvez ensuite utiliser les éléments suivants pour publier sur le servlet de connexion.

<form action="<c:url value="/j_spring_security_check"></c:url>" method="post" role="form">

Cela vous garantit de toujours publier dans <your_application_context>/j_spring_security_check.

référence pour jstl: http://docs.Oracle.com/javaee/5/jstl/1.1/docs/tlddocs/c/url.html

9
Kevin Bayes
<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>

Ajoutez votre fichier web.xml. Il crée un haricot de votre springSecurityFilterChain. Ensuite, vous obtenez une réponse. 

0
Gana