проблема
Изучая Широ, встречайте броски Широorg.apache.shiro.authc.AuthenticationException
Исключение, полное исключение выглядит следующим образом:
org.apache.shiro.authc.AuthenticationException: Authentication failed for token submission [org.apache.shiro.authc.UsernamePasswordToken - xue8, rememberMe=false]. Possible unexpected error? (Typical or expected login exceptions should extend from AuthenticationException).
Причина этого исключения связана с ошибкой аутентификации, но я думаю, что с тем Царством, которое я написал, не должно быть ничего плохого Наконец, после некоторого метания, я посмотрел на некоторые исходные коды Широ и, наконец, я знаю причину это проблема, так что я хочу добавить Процесс записывается.
решать
я здесьRealm
Способ подтверждения личностиdoGetAuthenticationInfo
Добавьте точки останова для отладки
authenticationToken
получить пользователейпарольgetCredentials()
Странно, когда что-то идет не так,имя пользователяgetPrincipal()
в порядке, и, глядя наauthenticationToken
исходный код, обнаружил, что это одно и то же
Имя пользователя и пароль переданыdoGetAuthenticationInfo
Это всегда успешно, так почему же это неправильно? отладкаdoGetAuthenticationInfo
Когда я обнаружил, что имя пользователя и пароль хранятся по-разномуИмя пользователя хранится в виде строки, а пароль хранится в виде массива символов типа char[].Может ли это быть вызвано этой проблемой?subject.login(token)
В методе имя пользователя и пароль хранятся в токене в виде строки,почему ты пришелdoGetAuthenticationInfo
Он изменился, поэтому я продолжал проверятьUsernamePasswordToken
Исходный код, потому что этот объект преобразует строковый тип пароля в тип char[]?Глядя на исходный код, я вижу, что это действительноUsernamePasswordToken
Преобразование входящего пароля пароля из строкового типа String в тип символьного массива char[] , я понимаю это здесь, вRealm
изdoGetAuthenticationInfo
метод, входящийAuthenticationToken authenticationToken
Имя пользователя хранится в String, а пароль хранится в Char[].Определенно невозможно получить данные типа Char[] путем получения String, поэтому я изменил пароль на Char[] для получения следующим образом
решить проблему.
Оригинальный адрес:В ожидании твоего таланта /2019/02/01/…