Tapestry学习八:关于组件(三)Limiting Access to a Page

本文介绍了一种使用onActivate方法进行页面访问控制的方法。通过检查session中是否存在特定的Application State Object (ASO),可以有效地实现用户的访问权限控制。此外,还讨论了事件处理的几种返回类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
为了更有效率的去限制访问,我们可以用onActivate方法,这个方法在前面说use the page activation contex传值的时候说到过。这个方法在每次页面加载的时候都会被调用一次。如果在activation context中有值,那么可以通过参数的方式传到这个方法。任何访问这个页面的用户都将被验证。
 还记得在前面关于成功验证的例子吗(这个我没说,等下稍微说下),我们将USER作为一个ASO保存了起来,所以我们不管用户有没有验证通过,在他访问这个页面时我们只要去看这个USER作为ASO是不是存在。在showall.java中加入如下代码
@ApplicationState
private User user;
private boolean userExists;
Object onActivate()
{
if (!userExists) return Start.class;
return null;
}
(在这里是这个意思,如果一个对象被当作ASO,那么要判断这个对象是否在session中存在,只要在类中加入这个对象的属性名+Exists的一个布尔值属性,那么通过这个boolean属性就能判断session中是否有这个ASO了,在上面这个例子中,如果验证成功则在session中是有USER对性存在的,如果没有验证成功则没有,这里就是根据这个判断的;
onActivate()方法在这里就象个普通的事件处理一样去工作,但是它不是由用户提交的事件触发,而是由页面的加载的生命周期来触发的。如果返回值不为空,则它的返回值则被当成事件处理的返回值类型返回。
(注:事件处理有几种返回类型:
1nothing :返回值为void
2string:也就是页面的逻辑名,如前面的another secure/page
3:class:这是最好的一种方式,比如Another.class。用String以后逻辑名可能会变,但是类名比较稳定。
4page:象在最前面那样,用@injectpage注入后返回的
5LINK
6Stream:一个流,更具体的说StreamResponse对象,我们可以以二进制的方式输出PDF或者EXCEL文档。)
 
   如果返回值是null,那么就以为着当前的页面将会被显示。
   现在showall页面算是正常了,但是却没有任何的内容显示。接着来吧,还有更多的组件呢。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值