我有一堆页面,只有在用户登录时才能访问。因此URL有意义,并且用户可以将它们加入书签,我已经在Wicket中将它们设为可收藏的URL。
现在出现问题,如果用户来查看这些页面但尚未登录。将调用在我的页面上显示PageParameters
的构造函数。
我的方法是:
if
语句以测试用户是否已登录。setReponsePage
成为我的登录页面setResponsePage
为所需的可收藏URL的类/参数这种做法是否正确?这似乎是一些额外的/手动的工作(尽管不是太多!),但Wicket提供了很多有用的东西“开箱即用”:所以我的问题是:这是必要的还是有一些Wicket设施我'我不知道我可以利用哪个?
答案 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
。