在大多数网站上,当用户即将提供登录系统的用户名和密码时,会出现一个"保持登录状态"的复选框.如果选中该复选框,它将使您在同一Web浏览器的所有会话中登录.如何在Java EE中实现相同的功能?
我正在使用基于FORM的容器管理身份验证和JSF登录页面.
<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>
Run Code Online (Sandbox Code Playgroud) 我有一个delphi应用程序,它记录来自不同地方的数据并将数据写入文件.该应用程序具有相当广泛的GUI,允许显示数据,选项配置等.
一位用户已请求将应用程序更改为可以作为服务运行.他的理由是,应用程序可以在启动时启动并在没有任何用户登录的情况下运行,并且无论谁登录都可以使用.
我的问题是:是否有任何其他解决方案可以让我安装应用程序,因为它现在存在,以便它仍然可以运行,没有用户登录,仍然可供所有用户使用?
我的直觉是将应用程序转换为服务运行并非易事.我假设您需要2个应用程序 - "无头"服务应用程序,以及由用户按需运行的GUI,可以与服务进行交互(此处也欢迎评论).
这是另一个问题的一个分支: 为网站实现"记住我"的最佳方式是什么?
最佳答案是实现这一点:http: //jaspan.com/improved_persistent_login_cookie_best_practice
总结:
使用随机数作为系列令牌,使用另一个作为登录令牌.将它们与用户名一起放在Stay Logged In cookie中.分配第二个正常的会话cookie.每次用户在没有会话cookie的情况下到达时,请使用Stay Logged In cookie.发布一个新的,这次使用新的随机登录令牌,保持系列令牌相同.
为什么要包含用户名?这有什么帮助?系列令牌应该足以识别用户和系列.系统令牌已添加到此方法中以防止DoS攻击,攻击者只是猜测所有用户名并立即点击该站点,将所有人都记录下来.但是为什么保留用户名是有道理的呢?
有没有办法在用户登录ASP.net网站时收到通知?
注意:用户无需访问"登录页面"即可登录.如果存在"记住我"cookie,他们可以点击任意页面并登录.
当用户登录时,我想获取一些与会话相关的信息.
注意:有
Login.LoggedIn活动.问题是每个页面上都不存在该控件; 它出现在(Login.aspx)上的一个页面不会调用OnLoggedIn事件.
与Global.asax具有全局On Session Start通知的方式相同:
void Session_Start(object sender, EventArgs e)
{
}
Run Code Online (Sandbox Code Playgroud)
我假设有一个用户登录的通知:
void LoggedIn(object sender, EventArgs e)
{
}
Run Code Online (Sandbox Code Playgroud)