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

Adr*_*ith 2 wicket

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

现在问题出现了,如果用户来查看这些页面,但还没有登录.PageParameters调用我的页面上的构造器.

我的方法是:

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

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

Mar*_*rst 8

您应该使用a IAuthorizationStrategy来保护您的页面.例如,参见基于简单角色的库的wicket-auth-roles.

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

if(!continueToOriginalDestination()) {
    setResponsePage(SomeReasonableDefaultPageLikeYourHomePage.class);
}
Run Code Online (Sandbox Code Playgroud)

请参阅Wicket Examples项目中的Authentication示例(此处在线演示)

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