У меня есть класс контейнера, только часть сервлета и уровень доступа к данным - это тот, который взаимодействует с моей базой данных и предоставляет результат для параметров запроса.Как узнать вызов моего класса и методов в java?
У меня есть классы и методы уровня доступа к данным как общедоступные, так что любой может читать содержимое, хранящееся в базе данных, в убеждении, что к нему обращается только правильный человек.
Обычно чтение/запись в базу данных происходит после завершения проверки (то есть, авторизация завершена). Это авторизация пользователя над данными выполняется в моем контейнере (скажем, сервлет), после которого я начинаю читать/записывать данные в свою базу данных.
Звучит слишком много теории правильно? Вот мой пример фрагмент моего уровня доступа к данным:
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
Да, простой флаг, указывающий, что пользователь авторизован. Другое дело - хранить данные в зашифрованном виде и передавать пароль на уровень доступа к данным, чтобы расшифровать его. –