首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在用户登录到web应用程序时实现“保持登录”

如何在用户登录到web应用程序时实现“保持登录”
EN

Stack Overflow用户
提问于 2011-02-23 03:23:58
回答 2查看 42.7K关注 0票数 55

在大多数网站上,当用户准备提供用户名和密码来登录系统时,会有一个类似"Stay log“的复选框。如果您选中此框,它将使您在同一web浏览器的所有会话中保持登录状态。如何在Java EE中实现相同的功能?

我使用基于表单的容器管理身份验证和JSF登录页面。

代码语言:javascript
复制
<security-constraint>
    <display-name>Student</display-name>
    <web-resource-collection>
        <web-resource-name>CentralFeed</web-resource-name>
        <description/>
        <url-pattern>/CentralFeed.jsf</url-pattern>
    </web-resource-collection>        
    <auth-constraint>
        <description/>
        <role-name>STUDENT</role-name>
        <role-name>ADMINISTRATOR</role-name>
    </auth-constraint>
</security-constraint>
 <login-config>
    <auth-method>FORM</auth-method>
    <realm-name>jdbc-realm-scholar</realm-name>
    <form-login-config>
        <form-login-page>/index.jsf</form-login-page>
        <form-error-page>/LoginError.jsf</form-error-page>
    </form-login-config>
</login-config>
<security-role>
    <description>Admin who has ultimate power over everything</description>
    <role-name>ADMINISTRATOR</role-name>
</security-role>    
<security-role>
    <description>Participants of the social networking Bridgeye.com</description>
    <role-name>STUDENT</role-name>
</security-role>
EN

回答 2

Stack Overflow用户

发布于 2011-02-23 04:30:00

通常是这样做的:

当您登录用户时,您还在客户端上设置了一个cookie (并将Cookie值存储在数据库中),该cookie将在特定时间(通常为1-2周)后过期。

当一个新的请求进入时,您检查某个cookie是否存在,如果存在,请查看数据库,看看它是否与某个帐户匹配。如果匹配,您将“松散”登录该帐户。当我说松散的时候,我的意思是你只让会话读取一些信息,而不是写入信息。您需要请求密码才能允许写入选项。

这就是全部。诀窍是确保“松散”的登录不会对客户端造成很大的伤害。这将在一定程度上保护用户,防止有人抓取他的记住我的cookie并试图以他的身份登录。

票数 22
EN

Stack Overflow用户

发布于 2014-11-29 04:34:23

您不能完全通过HttpServletRequest.login(用户名、密码)登录用户,因为您不应该在数据库中同时保留用户名和明文密码。此外,您不能使用保存在数据库中的密码散列执行此登录。但是,您需要使用cookie/DB令牌来识别用户,但是不使用基于Glassfish服务器API的自定义登录模块(Java类)来登录他/她。

有关更多详细信息,请参阅以下链接:

http://www.lucubratory.eu/custom-jaas-realm-for-glassfish-3/

Custom Security mechanism in Java EE 6/7 application

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5082846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档