填报权限控制
通常我们可以通过BaskServer的权限控制来控制填报权限,但是在某些场景下,我们希望自行实现填报的鉴权.
自定义投票接口
在BaskServer中,我们提供了自定义投票接口,可以通过该接口实现自定义的投票鉴权.
SPI实现com.basksoft.core.security.AccessDecisionVoter
public interface AccessDecisionVoter {
int NO_GRANT = 0;
int GRANT = 1;
int REJECTED = -1;
/*
* 投票
* @param tenantUser 租户用户
* @param baskFile 资源文件或目录
* @param capability 权限
* @param authority 授权信息
*/
int vote(TenantUser tenantUser, BaskFile baskFile, String capability, Authority authority);
/*
* 投票
* @param tenantUser 租户用户
* @param authModule 权限模块
* @param authCode 权限码
*/
int vote(TenantUser tenantUser, String authModule, String authCode);
}
例如:
public class MyAccessDecisionVoter extends DefaultAccessDecisionVoter {
@Override
public int vote(TenantUser tenantUser, BaskFile baskFile, String capability, Authority authority) {
if (ReportEnum.fillin.name().equals(capability) && !tenantUser.getId().equals("admin") ) {
return REJECTED;
}
return super.vote(tenantUser, baskFile, capability, authority);
}
}