Dorado 5 : 14.AccessChecker(访问权限检查器) (RF1)

AccessChecker是Dorado中提供的是一个用于实现整个应用的登录状态校验功能的特殊接口类,它位于com.bstek.dorado.security 包中,它提供了一个方法:

void checkAccess(DoradoContext doradoContext, Object object) throws
AccessDeniedException

该方法用于检测用户登录状态,如果未登录可以throw 一个com.bstek.dorado.security 包中的系统访问异常AccessDeniedException。用户可以实现这个接口类,然后将实现完成的接口类定义到Dorado应用的setting.xml文件当中。
示例实现类代码如下:

import com.bstek.dorado.common.DoradoContext;
import com.bstek.dorado.security.AccessChecker;
import com.bstek.dorado.security.AccessDeniedException;

public class SampleAccessChecker implements AccessChecker {

public void checkAccess(DoradoContext arg0, Object arg1)
throws AccessDeniedException {
Object obj = arg0.getAttribute(arg0.SESSION, "loginUserInfo");// 通过DoradoContext对象获取已经放到Session里KEY为"loginUserInfo"所对应的对象
if (obj == null) {
throw new AccessDeniedException("对不起,您未登录或登录已超时,请重新登录!");// 如果Session里没有loginUserInfo对象时抛出一个AccessDeniedException
}
}
}

打开Dorado工程home目录下的setting.xml文件,将该SampleAccessChecker类配置到setting.xml中,如下:

......
<property name="security.accessChecker" value="sample.security.SampleAccessChecker"/>
......

设置完成之后,我们只需将ViewModel或Controller的safe属性设置为true,系统运行后当客户端请求该ViewModel或Controller时会自动调用相应的AccessChecker 类的checkAccess 方法去校验当前用户的状态。
ViewModel的设置图如下:

图表 91 视图模型safe属性设定
Controller设置如下图:

图表 92 Controller Safe属性设定