0

ログイン後の登録ユーザーがファイルをダウンロード・アップロードできるシンプルなプロジェクトクラウドを開発しています。私はEclipseJavaEE、JSF、Hibernateで開発しています。私のプロジェクトでは、ユーザーにサインインできます。データが正しい場合は、ユーザーメニューを開きますが、ログに記録されたユーザーに関する情報をどこに保存するかがわかりません。明確ではないので、セッションの概念。Hibernateとセッションについていくつか読んだことがありますが、まだ理解していません。少なくとも現在ログインしているユーザーのユーザー名を保持する必要があります。どのオブジェクトを使用しますか?そして、どこ?。私たちを手伝ってくれますか?ありがとう

@ManagedBean
@SessionScoped
public class Login {

private String userId;
private String password;

public Login() {}

public String getUserId() {
    return userId;
}
public void setUserId(String userId) {
    this.userId = userId;
}
public String getPassword() {
    return password;
}
public void setPassword(String password) {
    this.password = password;
}

public String loginUser (){
    SessionHandler s = new SessionHandler();
    Session sessione = s.getDb();
    sessione.beginTransaction();
    Query query = sessione.createQuery( "Select password from Utenti where username= :id" );
    System.out.println("Qui lo prende: " + this.getUserId());
    query.setParameter("id", userId);
    System.out.println("tag debug");
    List<Utenti> res= query.list();
    if(password.equals(res.get(0))){
        this.setUserId(userId);
        return "first";

    }
    else
        return "noaccess";
}

TreeBeanでユーザーIDを使用する必要があります。これは私のTreeBeanです:

@ManagedBean
@SessionScoped
public class TreeBean {

@ManagedProperty(value="#{login.userId}")
private String user;

private TreeNode root;
private TreeNode selectedNode;
private Session db;

public Session getDb() {
    return db;
}

public void setDb(Session db) {
    this.db = db;
}

public void setUser(String user) {
    this.user = user;
}

public String getUser(){
    return user;
}

public TreeBean() {  
    root=new DefaultTreeNode("Root", null);
    System.out.println("Prova"+ user);
    recursive(0, root);

}    

.xhtmlでは、ファイルは問題なくユーザーIDを読み取ることができます。なんで?ありがとう

4

1 に答える 1

0

セッションスコープのManagedBeanを作成する必要があります。ログイン時に、そのManagedBeanに(DBから取得した)ユーザーオブジェクトを設定します。そして、すべてのアプリケーションからアクセスできるようになります。

別の方法は、セッションでユーザーオブジェクトを直接設定することです。

ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
Map<String, Object> sessionMap = externalContext.getSessionMap();

その後:

sessionMap.put("attributeName", whateverYouWantToSaveInSession);

しかし、私は最初のアプローチを選択します。

于 2013-03-26T10:12:50.657 に答える