2015-12-08 3 views
0

Я пытаюсь настроить проект Spring Spring в первый раз, но когда я пытаюсь войти в систему, я получаю сообщение: «ERR_TOO_MANY_REDIRECTS». Может быть, где-то под капотом, он снова перенаправляется администратору, но где? вот моя весна-security.xml:Конфигурирование spring-security и spring-mvc

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

    http://www.springframework.org/schema/security/spring-security-4.0.xsd 
    http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-4.1.xsd"> 

<http use-expressions="true" > 
    <csrf disabled="true"/> 
    <intercept-url pattern="/admin" access="hasRole('Admin')" /> 
    <intercept-url pattern="/" access="permitAll" /> 
    <intercept-url pattern="/logout" access="permitAll" /> 

    <access-denied-handler error-page="/403" /> 

    <form-login login-page='/login' login-processing-url="/login" authentication-failure-url="/login?error=true" 
       username-parameter="username" password-parameter="password" /> 

    <logout logout-url="/logout" logout-success-url="/logoutSuccessful" delete-cookies="JSESSIONID" invalidate-session="true" /> 

</http> 

<authentication-manager> 
    <authentication-provider> 
     <jdbc-user-service data-source-ref="myDataSource" 
          users-by-username-query= "select login, password, 'true' from employee where login=?" 
          authorities-by-username-query= "select login, role from employee where login =? " /> 
    </authentication-provider> 
</authentication-manager> 

<beans:import resource="data-source-cfg.xml"/> 
</beans:beans> 

класс контроллера:

@Controller 
@RequestMapping("/") 
public class HelloController { 
    @RequestMapping(method = RequestMethod.GET) 
    public String printWelcome(ModelMap model) { 
     return "login"; 
    } 

    @RequestMapping(value="/admin", method = RequestMethod.GET) 
    public String showAdmin(ModelMap model) { 
     return "admin"; 
    } 


    @RequestMapping(value="/login", method=RequestMethod.GET) 
    public String enter(@ModelAttribute("employee") Employee employee, ModelMap model){ 
     return "redirect:/admin"; 
    } 
... 

Таблица с логином и роли пользователя выглядит следующим образом:

Employee 
|id|login |password |first_name|last_name|mobile_phone|role | 
|1 |login1 |password1 |name1  |lname1 |phone1  |User | 
|2 |login2 |password2 |name2  |lname2 |phone2  |Admin | 

версия весной безопасности 4.0.3 , Это мой первый опыт работы с пружиной-mvc и весной-безопасности, поэтому вопрос может быть noobie. Что не так?

ответ

0

Проблема заключается в том, что вы просто перенаправляетесь на страницу администратора на ресурсе/login, где отправляется человек, если они не вошли в систему. Поскольку/admin требует определенной роли, он попытается перейти к страницу входа в систему, если пользователь не зарегистрирован, в который вы перенаправляетесь обратно на страницу администратора, создавая таким образом цикл.

Вы хотите вернуть представление, а не перенаправлять обратно на страницу администратора.

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