2014-01-08 3 views
0

Я использую весеннюю безопасность в своем приложении. Я хочу, чтобы пользователь вошел в систему первым до доступа к любым страницам на сервере, поэтому я беру подход переадресации. Но перенаправление, похоже, находится в бесконечном цикле, потому что он перенаправляет меня на страницу входа в систему независимо от того, сколько раз я отправляю страницу. Я попробовал отладку, и запрос всегда попадает в GET вместо метода POST, как я ожидал. Я использую аутентификацию LDAP, используя данные, введенные пользователем в форме. Вот код в контексте xml безопасности. Может кто-то указать мне в правильном направлении.Весна безопасность повторные перенаправления

<http pattern="/resources/**" security="none" /> 

<http auto-config="true"> 
    <intercept-url pattern="/login*" access="IS_AUTHENTICATED_ANONYMOUSLY" /> 
    <intercept-url pattern="/**" access="ROLE_USER" /> 
    <form-login login-page="/login" default-target-url="/dashboard" 
     authentication-failure-url="/loginfailed" /> 
</http> 

<authentication-manager> 
    <authentication-provider> 
     <user-service> 
      <user name="jimi" password="jimispassword" authorities="ROLE_USER, ROLE_ADMIN" /> 
      <user name="bob" password="bobspassword" authorities="ROLE_USER" /> 
     </user-service> 
    </authentication-provider> 
</authentication-manager> 

Когда я удалить <form-login login-page="/login" default-target-url="/dashboard" authentication-failure-url="/loginfailed" /> , то по умолчанию весной страницы входа и он работает, но я должен использовать учетные данные из XML-конфигурации, в отличие от LDAP учетные данные.

Редактировать **

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%> 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 
<c:set var="contextPath" value="${pageContext.request.contextPath}" /> 
<link rel="stylesheet" href="${contextPath}/resources/css/styles.css" type="text/css"> 
<h2 style="text-align:center">Login to continue to Application</h2> 
<div align="center" class="div"> 
    <form:form method="POST" modelAttribute="login" action="authenticate"> 
     <table> 
      <tr> 
       <td><form:label path="username" class="label">Username:</form:label></td> 
       <td><form:input path="username" class="input"/></td> 
       <td><form:errors path="username" class="error" /></td> 
      </tr> 
      <tr> 
       <td><form:label path="password" class="label">Password:</form:label></td> 
       <td><form:password path="password" class="input"/></td> 
       <td><form:errors path="password" class="error"/></td>    
      </tr> 
      <tr> 
       <td colspan="2" align="right"><input type="submit" 
        value="Login" class="button"/></td> 
      </tr> 
     </table> 
    </form:form> 
</div> 

благодаря Sree

+0

Вы можете поделиться своей пользовательской страницей входа? – coder

ответ

0

Ok. Наконец я добрался до рабочего состояния. Ниже приведены изменения, внесенные мной в контекст безопасности xml

 <intercept-url pattern="/login/**" access="IS_AUTHENTICATED_ANONYMOUSLY"/> 

изменение регулярного выражения URL. А также действие в моем login.jsp теперь

action="/login/authenticate" 

и, наконец, обновляется путь сопоставления запросов контроллера. Надеюсь, это поможет любому, у кого есть аналогичная проблема. Мне еще предстоит выяснить, правильно ли это подходит для этого, но работает пока.

-Sree

0

@sri

, как указано в коде я могу видеть, что вы перехватили URL "/login*"

теперь любой URL-адрес с логин в конце будет перехвачен весной безопасности, и после этого вы должны ввести правильные учетные данные ....

Теперь Дав учетные данные вашего перенаправляются на страницу /login

теперь его ясно, что снова наш URL заканчивается с логином, следовательно, он будет перехвачен снова родниковой безопасности ... вот почему цикл продолжается ....

Возможное решение

это может работать для вас, просто поместите следующий код ниже <http pattern="/resources/**" security="none" /> тега, как показано ниже:

код:

<http pattern="/resources/**" security="none" /> 
<http pattern="/Login.html" security="none" /> 
+0

@sri скажите мне, есть ли какая-то проблема –

+0

POST при входе в систему jsp принимает другой URL-адрес/логин. В любом случае я попробовал ваше предложение, но не работал. – sri

Смежные вопросы