2015-05-22 3 views
1

Хорошо, ребята, я решил проблему перенаправления. Но теперь у меня другая проблема. У моего веб-приложения есть три проекта. Один из проектов - это домашняя страница и говорит вам, есть ли у вас разрешения на участие в проектах. Все в порядке в этой части. Но теперь в двух других проектах у меня есть springsecurity.xml. И иметь собственные страницы ведения журнала. Но теперь клиент сказал мне, что хочу, чтобы страницы регистрации и перенаправляли меня на домашнюю страницу первого проекта. Проблема здесь.Spring Security two authenticationSuccessHandler

<beans:bean id="casAuthenticationFilter" class="org.springframework.security.cas.web.CasAuthenticationFilter" > 
<beans:property name="authenticationManager" ref="authenticationManager" /> 
<!-- Propiedad añadida para el redireccionamiento a AMS1.1 -->  
<beans:property name="authenticationSuccessHandler"> 
    <beans:bean class="org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler"> 
     <beans:property name="defaultTargetUrl" value="http://192.168.1.32:8080/AMS1.1/"/> 
     <beans:property name="alwaysUseDefaultTargetUrl" value="true"/> 
    </beans:bean> 
</beans:property> 

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

name = "alwaysUseDefaultTargetUrl" value = "true" в true.

Это потому, что всякий раз, когда я вхожу на страницу входа в проект, 2 всегда перенаправляю меня на проект 1. И проект вводится одним щелчком мыши. Но всякий раз, когда я вхожу в проект 1. Мне нужно щелкнуть по времени в ссылке, кнопке или что-то еще, чтобы войти в проект. 2.

Теперь, мой вопрос: могу ли я иметь два «authenticationSuccessHandler». Это перенаправляет меня на проект 2. И щелкаю один раз или какую-то логику или что-то в этом роде.

ответ

1

Ну после прочтения и поиска ответа. Наконец я нашел его. Итак, вот оно. Я сделал свой собственный класс для проверки подлинности.

<beans:property name="authenticationSuccessHandler"> 
    <beans:bean class="com.ams.dcs.jsf.extras.SuccesHandler"> 
    </beans:bean> 
</beans:property> 

И мой класс

public class SuccesHandler implements AuthenticationSuccessHandler { 
@Override 
public void onAuthenticationSuccess(HttpServletRequest hsr, HttpServletResponse hsr1, Authentication a) throws IOException, ServletException { 
    Set<String> roles = AuthorityUtils.authorityListToSet(a.getAuthorities()); 
    int cont=0; 

    String url = hsr.getRequestURL().toString(); 
    // String para ver si ya estamos adentro de la aplicacion o no 
    String ams="http://192.168.1.32:8080/AMS1.1/"; 
    String referrer = hsr.getHeader("referer"); 
      //Vemos si tenemos el rol de USER y DCS 
    if(roles.contains("SETT_USER") && roles.contains("DCS_USER")) 
    { 
    // para el debugeo 
    // System.out.print("holaaaaaaaaaaaaaaaaaaaaA:"+url); 
    // System.out.print("holaaaaaaaaaasdfasdfaaaaaaaaaaaA:"+referrer); 
    //Si estamos ya logueados 
    if(ams.equals(referrer)) 
    { 
      hsr1.sendRedirect("/DCS?faces-redirect=true");// Si ya estamos logueados que nos redireccione a DCS 
    } 
    else 
       hsr1.sendRedirect("/AMS1.1"); // Sino Que nos redireccione al homepage y de ahy al logging 
    } 
    else if(roles.contains("DCS_USER") && roles.contains("SETT_USER")) 
    { 
     hsr1.sendRedirect("/DCS?faces-redirect=true"); 
    } 

    System.out.print("MIS ROLEEEES"+roles.toString()); 
} 

}

Я рад, что я сделал это.