只有登录Wicket用户可用的可收藏页面的方法

时间:2011-03-17 15:59:15

标签: wicket

我有一堆页面,只有在用户登录时才能访问。因此URL有意义,并且用户可以将它们加入书签,我已经在Wicket中将它们设为可收藏的URL。

现在出现问题,如果用户来查看这些页面但尚未登录。将调用在我的页面上显示PageParameters的构造函数。

我的方法是:

  • 对于应该只能登录但可收藏的所有页面,在此构造函数中放置if语句以测试用户是否已登录。
  • 如果用户未登录:
    • 将(a)this.class(b)PageParameters存储在会话中的特殊位置
    • setReponsePage成为我的登录页面
    • 在登录页面中,如果登录成功,请检查会话中是否设置了这些特殊属性,如果是,则setResponsePage为所需的可收藏URL的类/参数

这种做法是否正确?这似乎是一些额外的/手动的工作(尽管不是太多!),但Wicket提供了很多有用的东西“开箱即用”:所以我的问题是:这是必要的还是有一些Wicket设施我'我不知道我可以利用哪个?

1 个答案:

答案 0 :(得分:8)

您应该使用IAuthorizationStrategy来保护自己的网页。例如,参见基于简单角色的库的wicket-auth-roles。

当Wicket尝试渲染映射到用户的书签URL的页面时,它会注意到用户尚未登录(因为会话没有为其分配用户),存储当前请求的URL,重定向到登录页面并等待用户正确登录。在登录表单的onSubmit中,然后调用

if(!continueToOriginalDestination()) {
    setResponsePage(SomeReasonableDefaultPageLikeYourHomePage.class);
}

请参阅Wicket示例项目中的Authentication示例(online demo here

continueToOriginalDestination将指示Wicket呈现用户请求的原始URL(如果存储了该URL),否则返回false