当前位置: 首页 > 面试题库 >

用Hibernate登录并存储已记录的用户名

陆子石
2023-03-14
问题内容

我正在开发一个简单的项目云,登录后注册的用户可以在其中下载和上传文件。我正在使用Eclipse Java
EE,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中使用userid。这是我的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中,文件可以读取userid,而不会出现任何问题。为什么?谢谢


问题答案:

您需要创建一个会话范围的ManagedBean。登录时,您可以在该ManagedBean中设置用户对象(从数据库获取)。然后,您将可以通过所有应用程序访问它。

另一种方法是直接在会话中设置用户对象:

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

然后:

sessionMap.put("attributeName", whateverYouWantToSaveInSession);

但是我会选择第一种方法。



 类似资料:
  • 接口说明 用户登录 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 POST /api/user/1.0.0/login 是否需要登录 否 请求字段说明 参数 类型 请求类型 是否必须 说明 username string form 是 用户名 password string form 是 密码 响应字段说明 参数 类型 说明 user St

  • 回顾 在上一章中,我们已经创建了数据库以及学会了使用它来存储用户以及 blog,但是我们并没有把它融入我们的应用程序中。在两章以前,我们已经看到如何创建表单并且留下了一个完全实现的登录表单。 在本章中我们将会建立 web 表单和数据库的联系,并且编写我们的登录系统。在本章结尾的时候,我们这个小型的应用程序将能够注册新用户并且能够登入和登出。 我们接下来讲述的正是我们上一章离开的地方,所以你可能要确

  • 我对Laravel有点陌生,我已经设置了一个表用户,其中包含用户名和密码字段。 我的登录屏幕上有一个表单,其中正式声明了这些字段,我有一个函数是UserController: 我知道这是顺利的,因为如果我空白提交表单,我可以看到错误消息。 我已经删除了默认的用户认证。 当我提交时,我得到: 错误异常在EloquentUserProvider.php第114行:参数1传递给Illumate\Auth

  • Logging in users(用户登陆) loopback User Model 登陆 登陆 登出 第三方登陆系统 密码重置 登陆 调用 User.login() 方法实现 登陆/认证, 需要提供一个带有 password 和 email/username 属性的对象,作为函数的第一个参数, 方法返回一个 access token 代码案例: /** * 登陆方法 * @param {o

  • cmf_get_current_user_id() 功能 获取当前登录前台用户id 参数 无 返回 int用户 ID,0表示用户未登录

  • 现在我么可以改进 new_topic 视图,将发布主题的用户设置当前登录的用户,取代之前直接从数据库查询出来的第一个用户,之前这份代码是临时的,因为那时候还没有方法去获取登录用户,但是现在可以了: boards/views.py (完整代码) from django.contrib.auth.decorators import login_required from django.shortcut

  • 用户已作为用户角色登录,我想以员工身份登录而不提交登录表单,但身份验证失败, 请查一下密码,帮帮我 @requestmapping(value=“/home”)public ModelAndView userHomePage(Model Model,HttpServletRequest request,HttpServletResponse response,Principal Principal

  • 问题不是测试中的记录器--嗯--是的,它们也是--真正的问题是运行的代码部分中的记录器(我所有的程序记录器)被设置为错误的日志级别。当程序测试被配置时,他们不会获得日志记录。 但是,当使用logback.goovy文件初始化logback时,项目报告的结果是正确的。但是,实际日志记录级别设置为跟踪或全部 从下面的输出来看,很明显logback已经配置为info。但是TRACE(最后一行)处的第一个