2012-12-25 130 views
0

假设我们在发送给用户的电子邮件中有一个指向目标页面的链接(不是登录页面)。如何在用户登录后将用户重定向到目标页面? Spring在后端。如何在用户登录后将用户重定向到目标页面

+0

请提供您当前的登录码! –

+0

只需要登录目标页面?如果目标页面没有登录请求,那么Spring Security(或者你正在使用的任何认证框架,包括标准的Java EE容器管理认证)应该已经自动记住最初请求的页面,并在成功登录后重新导向它。或者您是否使用本地认证? – BalusC

+0

@BalusC我们正在使用本土认证。 – blue123

回答

3

我们使用自主开发的认证

在当你继续请求(在自产自销的认证情况下,在servlet filter通常执行)之前检查的那一刻,你可以使用HttpServletRequest#getRequestURI()来获取当前的请求URI。

String requestedURI = request.getRequestURI(); 

你只需要在会话范围内或者作为登录表单的隐藏输入字段来记住这一点。一旦登录成功,那么你只需要重定向到它。

response.sendRedirect(requestedURI); 
+0

如果'Cookie'用于存储数据而不是会话或隐藏输入,有什么缺点? –

+0

这很笨拙。会话更容易使用(并且已经被cookie支持,参见http://stackoverflow.com/questions/3106452/how-do-servlets-work-instantiation-session-variables-and-multithreading/ 3106909#3106909)。 – BalusC

2

要添加细节BalusC的答案,即使你使用的是自家种的解决方案,我强烈建议你阅读过的"Authentication in a Web Application" Spring Security的描述。这很短,基本上是对你的问题的直接回答,并提供一些关于如何实施的提示。如果你想深入挖掘,你可以跳到Javadocs甚至挖掘到source code看看他们是如何做到的。这是一个非常优雅而灵活的解决方案,借用项目的一些想法甚至代码是没有坏处的。

相关问题