【问题标题】:How to manage sessions between users如何管理用户之间的会话
【发布时间】:2011-04-25 13:15:55
【问题描述】:

在 index.jsp 中,我有一个徽标,单击该徽标会转到 Admin.java 中的登录功能。我在 Admin.java 中进行了登录身份验证。工作完成后,index.jsp 中的相同徽标用于登录出去。消息确实来了,您已注销。

但是当其他用户再次尝试登录时,它会使用与前一个用户相同的用户名和密码。

如果 user1 已使用 username-user1 和 password-user1 登录并在注销后的示例。 当另一个 user2 尝试登录并输入 username-user2 和 password-user2 时,系统将参数作为 username-user1 和 password=user1。

如何管理我的会话?我没有使用过cookies。我试图检查互联网上的代码来帮助我。但我的问题并不能用任何例子来最好地解释。

问候, 阿卡那。

【问题讨论】:

    标签: jsp cookies


    【解决方案1】:

    但是当其他用户再次尝试登录时,它会使用与前一个用户相同的用户名和密码。

    当 bean 是应用程序范围而不是会话范围时,或者当您将用户名/密码声明为 静态 变量时,可能会发生这种情况。这样,它将在所有用户之间共享。

    如何管理我的会话?我没有使用过cookies。我试图检查互联网上的代码来帮助我。但我的问题并不能用任何例子来最好地解释。

    只需将 bean 放在会话范围内,将特定于用户的数据分配为静态变量。您也不必担心会话/cookie。 servletcontainer 将自己担心这一切,并为您完全透明地处理它。另请参阅 this answer 以了解幕后发生的事情。

    【讨论】:

    • 我在 Admin.java 的 doGet 方法中有变量字符串用户名和字符串密码。它们未声明为静态。如何将 bean 放在会话范围内。我了解您在答案链接中所写的内容,但我无法实现相同的内容。在 Admin.java 中,我声明了名为 session 的 HttpSession 变量。在用户名和密码字段取值之前。我使用了 session=request.getSession。然后我打印 session.getId 以了解会话所取的值。这对我有什么帮助?我很困惑。对不起。
    • 您已将HttpSession 声明为Admin 类的成员变量?同一个Admin 类在多个用户之间共享?那么,您是在与用户 Y 共享用户 X 的会话吗?这真的不是事情的工作原理。你应该永远将请求、响应或会话声明为多个用户之间共享的某个类的成员变量(阅读:在多个线程之间)。要在会话中存储对象,您应该使用 session.setAttribute()。无论如何,我建议选择一本像样的书/教程来正确学习 Servlet。从这里开始:stackoverflow.com/tags/servlets/info
    【解决方案2】:

    您是否在 Managed Bean 类中实现了 Serializable?喜欢:

    @ManagedBean("MyBean")
    @SessionScoped
    public class MyBean implements Serializable {
    ...
    }
    

    另外,如果只是登录,我认为您可以使用Request 范围。

    你可以试试这个吗?

    【讨论】:

    • 我没有实现 Seralizable 并且确实有一个托管 bean 类。这是一个登录,用户在管理员的情况下可以更新数据库或搜索数据库并注销。另一个用户可以输入他的登录名来检查更改或在数据库中搜索条件。数据库是关于书籍的。该应用程序是搜索引擎的一种复制品,具有额外的登录功能。
    • 那么,你可以尝试实现可序列化,看看它是否能解决你的问题?另外,请重新检查您的用户名和密码的获取和设置方法
    • 我对可序列化的话题很陌生。我已经搜索了网络,但无法正确使用可序列化。什么是托管 bean 类,它将如何帮助我解决问题?你能告诉我一些文件,我可以查看并解决我的问题。
    • @Gabriel:你怎么知道 OP 正在使用 JSF?这个问题并没有泄露任何东西,OP的问题历史也没有。 @Archana:你真的在使用 JSF 吗?如果没有,你应该忽略这个答案,因为它只会让事情更加混乱。
    • 不,我没有使用 JSF。好的,我会忽略这个答案。
    猜你喜欢
    • 2020-09-20
    • 1970-01-01
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    • 2019-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多