所以我有一个使用外部身份验证的应用程序。有类似的东西:
public class MyFilter extends GenericBeanFilter {
...
doFilter (...) {
if (needAuth) {
String url = request.getRequestURL();
// some code that saves this url to use after login
response.sendRedirect();
return;
}
}
我目前的问题是验证后用户返回默认页面。 这是因为此课程中首次请求的网址始终为' {host} /index.html'。 这似乎是很平常的情况,但我找不到任何关于它的事情。
如果我删除身份验证,我认为会发生什么: 1.浏览器拨打电话即{host} / country / city 2. Spring中的某些东西处理此请求并执行某种重定向,因此: 3.浏览器拨打{host} /index.html 浏览器拨打电话{host} / * .js ... 4. Angularjs拨打电话{host} / country / city
可能以上就是因为网址我使用caontains#:' localhost /#/ groups' ...即使关闭了服务器,Chrome也会首先拨打本地主机' 。 (对于' localhost / groups'第一个电话是' localhost / groups')嗯......
答案 0 :(得分:1)
当您谈到重定向到请求的页面时。你的意思是Angular路线吗?:
index.html/#/whatever
如果是这样,那么我认为spring不会处理碎片(#之后的东西)。您必须手动将Angular路由传递到服务器,以便在用户登录后重定向。
答案 1 :(得分:1)
您需要在一个请求中使用之前存在的信息。由于HTTP是未连接的协议,因此无法直接使用。
恕我直言,您应该在重定向到登录页面之前使用会话属性存储初始请求的URL。然后,在成功进行身份验证后,您可以重定向到会话中可用的已保存URL,然后将其从会话中删除。
algorythme很简单:
/index.html
)您还可以使用替代方法,例如在初始重定向的参数中传递已保存的URL,或使用不会重定向但仅提供非经过身份验证的的spring应用程序以角度级别管理所有内容>回应。但是恕我直言,会话属性在你的spring应用程序中更容易实现