【发布时间】:2011-01-05 02:54:00
【问题描述】:
我有一个数据访问 API,看起来像这样:
public interface IDataAccess {
void save(Doc doc);
Doc retrieve(DocId id);
void delete(Doc doc);
}
我需要根据用户的权限限制用户可以对文档执行的操作。我必须这样做的想法是创建另一个 API 来镜像数据访问操作,但也接受用户凭据以在执行操作之前对其进行验证:
public interface IAuthDataAccess {
// User is a previously authenticated user
void save(Doc doc, User user) throws SecurityException;
...
}
public class AuthDataAccess implements IAuthDataAccess {
IAuth auth = ...
IDataAccess dataAccess = ...
public void save(Doc doc, User user) throws SecurityException {
if (auth.saveAllowed(doc, user)) {
dataAccess.save(doc);
} else {
throw new SecurityException("access denied");
}
}
...
}
IAuthDataAccess API 将用于访问数据层。有没有更好的方法将授权/身份验证与数据访问层联系起来?
【问题讨论】:
标签: java authorization data-access-layer