0

我正在使用 Spring Framework 3.0.5 和 Spring Security 3.0.5 开发一个 web 应用程序,用户可以在其中登录和注销,如果他们愿意,可以使用 Remember-Me-Service。

由于我没有太多经验,我想知道它是否正常工作。我使用 PersistentTokenApproach(使用我自己的实现,因为我使用 Hibernate。)我可以看到 cookie 是在登录时创建并在注销时删除的。如果我有一个有效的 Remember-Me-Cookie 并关闭浏览器,当我再次打开浏览器时,我会再次成功登录。到现在为止还挺好。

现在,我只想知道我注意到的那些事情是否按预期工作,或者我是否确实犯了错误。

1)当用户在没有记住我的情况下登录并且浏览器选项卡关闭(不是浏览器本身)时,在重新打开新的浏览器选项卡时,他仍然经过身份验证(他使用相同的 JSESSIONID)。关闭浏览器并再次重新打开时,他不再经过身份验证。关于 Web 应用程序的安全性,这是推荐的(“正常”)行为吗?

2)当使用 remember-me 并且用户成功认证(通过登录或稍后通过 cookie)时,不再对 cookie 进行检查。这意味着,如果同时用户在线,我会从数据库中删除 cookie,用户仍然会登录,甚至可以观看受保护的页面。我猜这是因为他之前已经过身份验证并且一直使用相同的 SESSIONID。当我关闭浏览器并重新打开它时,他不再经过身份验证。

3)当我没有cookie并打开主页时,对于我发送的每个请求(页面上的每张图片,每个文件),服务器都会检查rememberme-cookie。那是对的吗?

对不起新手问题,但我只是想确保一切正常。:-) 提前致谢!

4

1 回答 1

1

1)就浏览器中的选项卡而言,我很确定它们都共享相同的浏览器会话。如果您尝试使用 gmail 或其他基于 Web 的服务,您将在关闭/打开选项卡时看到相同的行为。对于旧版本的 IE(可能是版本 6),单独的实例有自己的会话,除非它们是从现有的 IE 实例中生成的。

2)这听起来是正确的。在经过身份验证后,在每个请求上访问数据库并不是很理想。

3) 这是正确的,因为默认情况下,spring 安全过滤器将在 /* 上进行过滤 - 并尝试查找身份验证信息。您可以为您不需要保护的资源添加排除项到您的安全配置中 - 即

<http> <intercept-url pattern="/images/**" filters="none"/>
于 2011-04-21T14:48:22.493 回答