проблема
Изучая Широ, встречайте броски Широ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Когда я обнаружил, что имя пользователя и пароль хранятся по-разномуsubject.login(token)В методе имя пользователя и пароль хранятся в токене в виде строки,doGetAuthenticationInfoОн изменился, поэтому я продолжал проверятьUsernamePasswordTokenИсходный код, потому что этот объект преобразует строковый тип пароля в тип char[]?UsernamePasswordTokenПреобразование входящего пароля пароля из строкового типа String в тип символьного массива char[] , я понимаю это здесь, вRealmизdoGetAuthenticationInfoметод, входящийAuthenticationToken authenticationTokenИмя пользователя хранится в String, а пароль хранится в Char[].Определенно невозможно получить данные типа Char[] путем получения String, поэтому я изменил пароль на Char[] для получения следующим образомрешить проблему.
Оригинальный адрес:В ожидании твоего таланта /2019/02/01/…