2015-02-05 3 views
0

I базовый uri моей заявки localhost:8080/COMEI_Beneficiario, но я должен написать localhost:8080/COMEI_Beneficiario/login, чтобы получить доступ. В других приложениях он перенаправляет себя на /login, когда записывается базовый uri, но я не могу найти разницу между конфигурациями. Ниже вы найдете .xmlПеренаправление базовой линии весны безопасности

<?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" 
    xmlns:p="http://www.springframework.org/schema/p" 
    xmlns:util="http://www.springframework.org/schema/util" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 
     http://www.springframework.org/schema/security 
     http://www.springframework.org/schema/security/spring-security-3.1.xsd 
     http://www.springframework.org/schema/util 
     http://www.springframework.org/schema/util/spring-util-3.1.xsd"> 



    <http auto-config="true" use-expressions="true"> 
     <intercept-url pattern="/**" access="hasRole('ROLE_ANONYMOUS')" /> 
     <intercept-url pattern="/login" access="permitAll"/> 
     <intercept-url pattern="/jcaptcha" access="permitAll"/> 
     <intercept-url pattern="/olvidePassword" access="permitAll"/> 
     <intercept-url pattern="/recovery/*" access="permitAll"/> 
     <intercept-url pattern="/usuario/*" access="permitAll"/> 
     <intercept-url pattern="/paginaMensajes" access="permitAll"/> 
     <intercept-url pattern="/loginfailed" access="permitAll"/> 
     <intercept-url pattern="/resources/**" access="permitAll" /> 
     <intercept-url pattern="/menu" access="hasRole('MENU_BENEFICIARIO')" /> 

<!--  <intercept-url pattern="/" access="hasRole('0')"/> --> 
     <intercept-url pattern="cartilla" access=" hasRole('BENEFICIARIO')" /> 
     <intercept-url pattern="/cartilla/**" access=" hasRole('BENEFICIARIO')" /> 
     <intercept-url pattern="consumos" access=" hasRole('CONSUMOS')" /> 
     <intercept-url pattern="/consumos/**" access=" hasRole('CONSUMOS')" /> 
<!--  <intercept-url pattern="/**" access="hasRole('0')" /> --> 
     <access-denied-handler error-page="/403"/> 

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


     <logout logout-url="/j_spring_security_logout" invalidate-session="true" logout-success-url="/logout"/> 
    </http> 

<authentication-manager> 
     <authentication-provider user-service-ref="userDetailsServiceImpl"> 

     </authentication-provider> 
</authentication-manager> 

</beans:beans> 

Спасибо.

ответ

1

не уверен, является ли это лучшая практика или нет: В контроллере добавить метод, как показано ниже

@RequestMapping(value={"/login","/"}, method=RequestMethod.GET) 
public String home(){ 
    return "redirect:login"; 
} 

Второй способ это написать login.jsp и сделать это Jsp в качестве файла приветствия в web.xml. в login.jsp использовать ответ неявный объект перенаправлять на «login».

+0

Спасибо за ваш ответ, я решил, как вы предложили, но я постараюсь сделать это с помощью security xml. –

0

Spring Security будет перенаправляться на страницу входа в систему, если пользователь анонимный, а анонимный доступ запрещен по запрашиваемому пути. Ваше первое правило:

<intercept-url pattern="/**" access="hasRole('ROLE_ANONYMOUS')" /> 

Это позволяет анонимный доступ к базовому URL-адресу, таким образом, не перенаправлять.

Примечание! Правила перехвата оцениваются в том порядке, в котором объявляются, останавливаются после первого совпадения; другими словами: /** всегда должен быть последним.

+0

Спасибо за ваш ответ. Я удалил эту строку, но у меня все еще нет перенаправления. –

+0

@ LukeSpringWalker Попробуйте повторно ввести один из правил 'intercept-url', которые вы закомментировали. – holmis83

+0

Все еще не удача. –

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