WedX - журнал о программировании и компьютерных науках

Апач Широ. «Запомнить меня» и файлы cookie не работают

Я разрабатываю проект на основе vaadin, используя Apache Shiro 1.2 для обеспечения безопасности. У меня проблема с функцией "запомнить меня". Я пытаюсь использовать CookieRememberMeManager как RememberMeManager, но после аутентификации Subject.isRemembered() всегда возвращает false.

public class ApplicationSecurityManager extends DefaultSecurityManager {

    public ApplicationSecurityManager(Realm singleRealm) {
        super(singleRealm);
        setRememberMeManager(new CookieRememberMeManager());
    }
}

Я установил SecurityManager в методе инициализации GuiceFilter.

    final Realm realm = new ApplicationSecurityRealm();
    final SecurityManager securityManager = new ApplicationSecurityManager(realm);
    SecurityUtils.setSecurityManager(securityManager);

Когда я пытаюсь войти в свое приложение, все работает нормально, кроме функции «запомнить меня». Код:

    final Subject currentUser = SecurityUtils.getSubject();

    UsernamePasswordToken token = new UsernamePasswordToken(username,password);
    token.setRememberMe(rememberMe);
    currentUser.login(token);

У приложения нет исключений, и я не смог решить эту проблему с помощью отладки. Я использую Apache Tomcat 7.0.40, можно ли запретить куки?

P.S. Извините за мой английский, я не из англоязычной страны.

25.05.2013

Ответы:


1

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

Subject.isRemembered() немного сложна в Широ. Он возвращает true только в том случае, если у субъекта есть действующая настройка «Запомнить меня» (файл cookie и т. д.) И субъект не прошел проверку подлинности. Подробности здесь: https://shiro.apache.org/static/1.2.2/apidocs/org/apache/shiro/subject/Subject.html#isRemembered()

Итак, я подозреваю, что ваш метод «Запомнить меня» работает нормально, но ваши ожидания от Subject.isRemembered() не соответствуют тому, что на самом деле делает этот метод.

28.04.2015
Новые материалы

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

ИИ в аэрокосмической отрасли
Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


Для любых предложений по сайту: [email protected]