簡體   English   中英

Spring Security的兩個身份驗證SuccessHandler

[英]Spring Security two authenticationSuccessHandler

好的,我解決了重定向的問題。 但是現在我有另一個問題。 我的Web應用程序包含三個項目。 一個項目是主頁,告訴您是否有權輸入這些項目。 在那部分一切都很好。 但是現在在其他兩個項目中,我有了springsecurity.xml。 並擁有自己的日志頁面。 但是現在客戶告訴我,想要那個登錄頁面並將我重定向到第一個項目的主頁。 問題在這里。

<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。然后單擊一次或某些邏輯或其他內容。

在閱讀並尋找答案之后。 我終於找到了。 所以就到這里。 我為認證創建了自己的課程。

 <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());
}

}

我很高興自己做到了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM