2011-12-15 10 views
0

私はSpring Securityで初めてです。セッションから、現在ログインしているユーザーのユーザー情報(名前、パスワード、役割を)Beanを管理し、私がアクセスできるどのようjsf springセキュリティユーザ情報

  1. :私は春のセキュリティと3の3つの質問をJSF2使用していますか?

    ビュー内で、たとえばユーザーの役割に応じて要素を表示するために使用するためです。

  2. ユーザーがログインしているかどうかを確認するにはどうすればよいですか?ユーザがログインしていない場合は「ログインリンク」を表示し、ログインしている場合は「ログアウトリンク」を表示するには、管理対象Beanでこれを保存するためにSpring Securityのどのプロパティを使用する必要がありますか情報とそれをビューで使用しますか?

  3. 「ログインリンク」は、ログインページのURLに対するGETリクエストです。しかし、どうすれば "ログアウトリンク"を表示できますか?それは、POST要求であると、「H:のcommandLink」を使用する必要がありますか、これは

    <h:commandLink value="Logout" action="#{request.contextPath}/j_spring_security_logout" /> 
    

    それともGETリクエスト?:

    <h:link value="Logout" outcome="#{request.contextPath}/j_spring_security_logout" /> 
    

ことができるの?:ようでありがとうございました上級者。

+1

これはいくつかの助けを与えるかもしれません - http://static.springsource.org/spring-security/site/docs/3.0.x/reference/el-access.html –

答えて

1
  1. は、オブジェクトの認証は、この性質を誰が保存され、あなたはmanagedBeanの次の行を取得することができます。彼の認証がAnonymousAuthenticationTokenのinstaceない場合は、ユーザーがログインしている

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

  2. 、あなたのspring-security-context.xmlでは、あなたはSpringによってインターセプトされたURLを定義する必要があります。

    最初のインターセプターは、ばねによって分析されていません。この場合、AuthenticationオブジェクトはAnonymousAuthenticationTokenのインスタンスです。

    二インターセプタは、私がわかりませんが、私は、私はそれがでなければならないことを読んだ覚えていると思うの春によって解析され、ユーザーはspring-security-context.xml

    /* This is a example for to obtain the rol name for example for generate automatic menu */ 
    Authentication auth = SecurityContextHolder.getContext().getAuthentication(); 
    String namePrincipalRol = null; 
    if (auth instanceof AnonymousAuthenticationToken) { 
        namePrincipalRol = "ROLE_ANONYMOUS"; 
    } else { 
        namePrincipalRol = auth.getAuthorities().iterator().next().getAuthority(); 
    } 
    
  3. 良い質問で宣言されたログインページにリダイレクトされ、POSTを試してみると面白いでしょう。 outputLink

敬具:私は時間を使用しています。

+0

あなたの答えは非常に@ラファエルありがとう。私はこの質問を忘れてしまった。私はフレームワークとテストについて私自身の読書でそれを解決しました。最後に、私はh:outputLink(hrefとhtmlリンクをレンダリングする)を使用しました。これはGETリクエストであり、ポストではありません。ありがとうございました。 – choquero70

+0

ご連絡ありがとうございます。質問は古いですが、答えは将来的に役立つことがあります。 –