2016-05-22 4 views
1

Java EEフォームログインモジュールを使用してログインした後、セッション属性としてユーザーのIDを設定する必要があります。ログイン後にセッション属性を設定する

今、ログイン後、IDをセッション属性として設定するもう1つのHTTPリクエストを送信しますが、これを1ステップで実行する必要があります。それを行う最善の方法は何ですか? standalone.xmlで

ログイン・モジュール構成:

<login-module code="com.MyLoginModule" flag="required"> 
    <module-option name="dsJndiName" value="java:/PostgresDS"/> 
    <module-option name="principalsQuery" value="select password from appuser where email=?"/> 
    <module-option name="rolesQuery" value="select 'AUTHENTICATED', 'Roles' from appuser where email=?"/> 
    <module-option name="hashAlgorithm" value="custom"/> 
</login-module> 

追加の要求ログイン後(RESTEasyの):

@GET 
@Path("/web") 
@Produces(MediaType.APPLICATION_JSON) 
public User getUser(@Context HttpServletRequest hsr) throws MyRuntimeException{ 
    User u; 
    HttpSession session = hsr.getSession(); 
    u = um.getUserByMail(hsr.getUserPrincipal().getName()); 
    session.setAttribute("userId", u.getId()); 
    return u; 
} 

MyLoginModule:

public class MyLoginModule extends DatabaseServerLoginModule { 
@Override 
public String createPasswordHash(String username, String password, String digestOption){code} 
} 

答えて

0

私はあなたがJBossを使用していると仮定ここ... ....

次の例のよう

org.apache.catalina.authenticator.FormAuthenticator(JBossで標準認証サーバとして使用)

を強化し、そこに追加のロジックを実装することができます。

public class MyFormAuthenticator extends FormAuthenticator{ 

@Override 
public boolean authenticate(Request request,HttpServletResponse response,LoginConfig config){ 
    boolean success = super.authenticate(request,response,config); 
    if(success){ 
     Session session = request.getSessionInternal(false); // Use the existing session 
     session.put .... // the action which you want to do 
    } 
    return success; 
} 

(WEB-INFフォルダに配置)のjboss-web.xmlのを調整することを忘れないでください:

<jboss-web> 
    <context-root>myContext</context-root> 
    <valve> 
    <class-name>MyFormAuthenticator</class-name> 
    </valve> 
</jboss-web> 

Mavenの

あなたはこのMavenの依存関係を(使用していることを確認してくださいjboss-as-webではありません):

<dependency> 
    <groupId>org.jboss.web</groupId> 
    <artifactId>jbossweb</artifactId> 
    <version>7.5.10.Final</version> 
</dependency> 
+0

JBossはWF 8以降、バルブは使用しませんが、Undertow httpハンドラ。 –

関連する問題