0

在我的上下文中:

Context
 |
 |->  Login.zul
 |->  Home.zul
 |->  page1.zul
 |->  page2.zul

如果我点击 Home.zul 的链接,如果未通过身份验证,我希望它重定向到登录,同样对于所有 zul,如果未完成身份验证,我会将其重定向到登录屏幕

我的解决方案:在每个控制器中进行身份验证检查,如果未通过身份验证重定向到 Login.zul。

但是我有许多 zul 和许多控制器,我不想进入每个控制器并做同样的事情,有人可以想到任何想法,而无需去每个班级并进行更改。可能在 web.xml 或 zk.xml 中可以添加任何我不知道的标签以获得相同的结果,或者执行一些客户端脚本以获得相同的结果。任何可以减少工作量的聪明的东西。

4

4 回答 4

1

您应该能够使用请求拦截器

与您的评论相关,看起来有:DesktopInitSessionInit类,您可以使用它们。但是,除非用户的会话无限期地持续,如果没有请求拦截器,我不确定您是否能够处理会话超时(除非您明确检查以确保用户在访问它的任何地方都有一个有效的会话)。这也是一个安全问题。

于 2012-06-14T10:48:20.587 回答
0

答案是Filters
过滤器将被编写一次并在web.xml.
您可以为 Web 应用程序中的所有资源或选定资源设置过滤器。过滤器可以拦截对资源的每个请求。使用过滤器,您可以通过检查浏览器发送的内容来验证用户身份,cookie也可以使用它修改内容。 有用的链接:http ://www.javaworld.com/jw-06-2001/jw-0622-filters.htmlrequestresponse

于 2012-06-14T10:53:46.440 回答
0

这是一个 Java Web 应用程序吗?如果是这样,您可以在 web-inf/web.xml 文件中进行配置。

您还可以创建一个 Servlet 过滤器,以在请求到达任何控制器之前检查用户的登录状态。

于 2012-06-14T10:53:53.320 回答
0

为此,您可以使用Spring Security 。

于 2012-06-14T15:13:36.263 回答