我有一个容器类,只有servlet部分和数据访问层是一个与我的数据库进行交互并提供查询参数结果的层。如何在java中知道我的类和方法的调用者?
我有我的数据访问层类和方法公开,以便任何人都可以读取存储在数据库中的内容,相信只有正确的人才能访问它。
通常,数据库的读取/写入发生在验证完成后(即;授权完成)。这个用户对数据的授权是在我的容器层(比如servlet)中执行的,之后我开始向我的数据库读/写数据。
听起来太多的理论是正确的?这是我的数据访问层的我示例代码段:
DataStore.java
//This is my interface
public interface DataStore {
public String[] selectData(query params) throws Exception;
public String[] addData(query params) throws Exception;
public String[] editData(query params) throws Exception;
public String[] deleteData(query params) throws Exception;
}
DataStoreImpl.java
//This is my implemetation part of my above interface
public class DataStoreImpl implements DataStore {
public String[] selectData(query params) throws Exception {
//Code implementing select query logic
}
public String[] addData(query params) throws Exception {
//Code implementing insert query logic
}
public String[] editData(query params) throws Exception {
//Code implementing update query logic
}
public String[] deleteData(query params) throws Exception {
//Code implementing delete query logic
}
}
现在我最大的噩梦是,如果有人读什么/因为我的数据访问层中的所有类和方法都是“公共”,所以未经授权将数据写入我的数据库。我该如何克服这一点?
即,如何确保某人在进行授权后访问数据访问层上的类和方法?
如何知道DataStore或DataStoreImpl中的类和方法的调用者?还是有其他的选择吗?
您可以使用Thread.currentThread()。getStackTrace()知道调用了哪些方法。否则,只需将字段“已验证” –
“已验证” - >我无法获取您@ElMarce – lsof
是的,一个简单的标志,告诉您用户已获得授权。其他的事情是保持数据加密并将密码传递给数据访问层来解密数据。 –