Безопасность Spring - пустой указатель SecurityContext.authentication в taglib и jsp, но хорошо в контроллере

>>> from collections import deque
>>> def magic(num):
        digits = deque()
        while True:
            num,r = divmod(num,10)
            digits.appendleft(r)
            if num == 0:
                break
        return list(digits)

>>> magic(123)
[1, 2, 3]

Согласно моим временам, это решение значительно быстрее, чем метод струн (magic2), даже для небольших примеров.

>>> def magic2(num):
        return [int(i) for i in str(num)]

Сроки:

magic

>>> timeit.timeit(setup='from __main__ import magic', stmt='magic(123)')
1.3874572762508706
>>> timeit.timeit(setup='from __main__ import magic', stmt='magic(999999999)')
3.2624468999981673

magic2

>>> timeit.timeit(setup='from __main__ import magic2', stmt='magic2(123)')
3.693756106896217    
>>> timeit.timeit(setup='from __main__ import magic2', stmt='magic2(999999999)')
10.485281719412114
5
задан Stijn Geukens 22 July 2017 в 19:24
поделиться

2 ответа

РЕШЕНО

возникла проблема из последовательности фильтров. PageFilter (sitemesh) был вызван перед весенним фильтром безопасности, и из-за этого контекст безопасности еще не был доступен в jsp. Изменение порядка фильтров в web.xml (сначала фильтр безопасности) устранило проблему.

5
ответ дан 14 December 2019 в 19:18
поделиться

Это может показаться очевидным вопросом, но заставляли ли вы пользователя входить в систему (т.е. проходить аутентификацию) в какой-либо момент до того, как он получит доступ к странице /myaccount.htm? Я не видел никаких сопоставлений со страницей входа, требующей анонимного доступа в вашем источнике определения объекта, поэтому я спрашиваю. Если пользователь может получить доступ к /myaccount.htm без аутентификации, то к моменту обращения к странице в контексте безопасности не будет создан принципал, следовательно, ваше исключение NullPointerException. Кроме того, вы используете аутентификацию на основе форм? HTTP BASIC аутентификация? Другой тип, поддерживаемый Acegi?

0
ответ дан 14 December 2019 в 19:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: