2012-10-29 17 views
22

にログインした場合、私は春に新たなんだリダイレクト:春のセキュリティは - すでに

を私は、ログインページにアクセスしてから、認証されたユーザーを望んでいません。ユーザーが既に認証されている場合、 '/ login'のリダイレクトを処理する適切な方法は何ですか?言っておきますが、すでにログインしている場合は「/ index」にリダイレクトしたいです。

ログイン時にisAnonomous()を試しましたが、拒否されたページにリダイレクトします。ログインページのコントローラ機能で

<security:http auto-config="true" use-expressions="true" ...> 
    <form-login login-processing-url="/resources/j_spring_security_check" 
       default-target-url="/index" 
       login-page="/login" authentication-failure-url="/login?login_error=t" /> 
    <logout logout-url="/resources/j_spring_security_logout" /> 
    ... 
    <security:intercept-url pattern="/login" access="permitAll" /> 
    <security:intercept-url pattern="/**" access="isAuthenticated()" /> 
</security:http> 
+0

[ログイン後にログインページにアクセスするとホームページにリダイレクトする方法は?](http://stackoverflow.com/questions/12597519/how-to-redirect-to-the-homepageログイン後のページへのユーザーアクセスの場合) – Xaerxess

+0

http://stackoverflow.com/questions/32225414/spring-security-login-issue-after-re-login-in-same-セッション/ 32325358#32325358 この問題はこのリンクで解決しました。ご覧ください。 – parshant

答えて

35

:。

  1. チェックユーザーがログインしている場合

  2. その場合にはインデックスページに彼を転送します。

関連するコード:

Authentication auth = SecurityContextHolder.getContext().getAuthentication(); 

if (!(auth instanceof AnonymousAuthenticationToken)) { 

    /* The user is logged in :) */ 
    return new ModelAndView("forward:/index"); 
} 
+4

これはlogin - > homeのような場合にのみ有効です。既にログインしていて、アドレスバーにログインURLを入力すればどうなりますか?ホームページ(または私がすでにいるところ)にリダイレクトされるのは理にかなっています... –

+0

私のために働いています。ありがとうございました – zameer

0

ねえ、あなたがそれを行うことができます。

<h:head> 
<sec:authorize access="isAuthenticated()"> 
    <meta http-equiv="refresh" content="0;url=http://your index.xhtml url (full url)" /> 
</sec:authorize> 
</h:head> 

この方法は非常に簡単で便利ですね。

1

login.xhtml

<h:head > 
    <f:metadata> 
     <f:event type="preRenderView" listener="#{loginBean.onPageLoad}"/> 
    </f:metadata> 
</h:head> 

loginBean

public void onPageLoad(){ 
    Authentication auth = SecurityContextHolder.getContext().getAuthentication(); 
    if (!(auth instanceof AnonymousAuthenticationToken)) { 
     try { 
      FacesContext.getCurrentInstance().getExternalContext().redirect(url); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 
5

に成功したユーザがすでにログインしている場合は、あなたのlogin.jspに以下を追加し、ログインページからリダイレクトするには:

追加しますあなたのJSPの上部にあるセキュリティタグライブラリヘッダ:

<%@taglib uri="http://www.springframework.org/security/tags" prefix="sec"%> 

その後(好ましくは上部近く)あなたの「頭」タグ内に次のタグを追加します。

<sec:authorize access="isAuthenticated()"> 
    <% response.sendRedirect("main"); %> 
</sec:authorize> 

ユーザーがアクセスする場合、これは(あなたのメインの.jspファイルがマップされているものか)main.htmlとするリダイレクトしますログインページはすでにログインしています。

有効なログインページの習慣は、春のセキュリティの "フォームログイン" Beanにすべてのリダイレクト作業をさせ、私が変更できるログインコントローラがないようにするためです。

関連する問題