Этот вопрос может иметь немного философский аспект.Deadbolt 2 Функция ограничения имеет только один возможный код ошибки
Я использую Deadbolt 2 (Scala) в своем приложении для воспроизведения, и он работает достаточно хорошо.
Глядя на (строка 47) Restrict function definition я заметил, что он не будет вызывать onAuthFailure по одной из следующих причин:
- Нет пользователей в сессии (без темы)
- Действие не указано ни одной роли.
- Пользователь попытался выполнить действие, для которого у них не было одной или нескольких требуемых ролей.
В пользовательском интерфейсе приложения я хотел бы получить другой код состояния для каждого из них, чтобы пользователь, который не вошел в систему (условие 1), будет перенаправлен на страницу входа, но условие 3 будет более изящным обрабатываются только предупреждением (поскольку они не могут навредить и, возможно, случайно попытались отредактировать, когда у них есть доступ только для чтения - возможно, ошибка UI, но вход в систему снова немного драконен).
Если бы мне пришлось договориться только о двух кодах статуса, я бы хотел различать 1 и другое 2. Я вижу, как это можно было бы сделать, но хотелось бы получить другие мнения по существу даже это.
Если бы я должен был выполнить это изменение, похоже, я мог бы просто переопределить функцию Ограничения в моем собственном расширении черты DeadboltActions.
Я немного не знаком с scala, поэтому я открыт для дополнительных идей о том, как наилучшим образом достичь этих целей.
Одна вещь, которая возникла у меня с этой проблемой, заключается в том, что существует различная разница между аутентификацией и авторизацией. Пользователь может быть аутентифицирован (зарегистрирован, используя действительные учетные данные), но может не быть авторизированным (у него нет необходимых ролей для конкретного действия). – Joel
как имитировать эти функции при запуске scala Test – user170114