Java Play Framework Скрытые маршруты URL - PullRequest
2 голосов
/ 27 сентября 2011

Можно ли скрыть / замаскировать ссылки в java play framework.Проблема, с которой я столкнулся, заключается в том, что я хочу, чтобы пользователь мог войти в систему и просматривать принадлежащие ему сообщения, но я не хочу, чтобы какой-либо старый пользователь мог найти эти сообщения, просто взломав URL.

Что у меня естьget - это контроллер уведомлений, у которого есть метод show (long id).

Мой маршрут для этого метода:

GET     /Message/Show               Notifications.show

Я вызываю функцию, используя

@Notifications.show(':id')

URL-адрес этой функции:

http://localhost:9000/Message/Show?id=8

Можно ли удалить параметр с конца URL-адреса, чтобы люди не могли взломать определенные URL-адреса, угадав параметры.

Ответы [ 4 ]

5 голосов
/ 27 сентября 2011

Это то, что может быть достигнуто с помощью перехвата.

http://www.playframework.org/documentation/1.2.3/controllers#interceptions

Внутри этих классов вы можете проверить, вошел ли текущий пользователь в систему (сохранить в сеансе)

2 голосов
/ 28 сентября 2011

Я использовал этот подход, я не знаю, является ли это лучшим способом, но он работает так, как я хочу.

Спасибо за помощь и идеи.

public static void show(long id)
    {
        Notification notification = Notification.findById(id);
        User connectedUser = User.find("byEmail", Security.connected()).first();

        if(notification.recipient.equals(connectedUser))
        {
            render(notification);
        }
        else
        {
            forbidden("This isnt your message stop hacking the urls!");     
        }
    }
2 голосов
/ 27 сентября 2011

Если я правильно понял, вы хотите скрыть URL-адреса, чтобы пользователи не знали их и не вводили их.Если они это сделают, они увидят контент, который они не должны видеть.Это плохо и не должно быть сделано таким образом, взгляните на Безопасность через неизвестность (Википедия) , используйте читаемые / добавляемые в закладки URL-адреса и создайте надлежащие механизмы входа в систему и безопасности, такие как leifg предлагаем .

1 голос
/ 28 сентября 2011

Или вы можете войти в систему пользователя и получить только сообщение пользователя.

Зачем искать сложное решение, такое как запутывание / перехватывание или что-то еще, когда существует очень простое решение. Воспользуйтесь сеансом подключенного пользователя, извлеките только его сообщения и все готово.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...