Меню

Sec authorize не работает

Spring Boot Security – Thymeleaf sec: authorize-url не работает

Тег sec: authorize-url не работает с безопасностью загрузки Spring по умолчанию:

Проект spring -boot-sample-web-method-security:

Адаптируйте контроллер из образца:

Добавьте соответствие URL-адреса безопасности приложения:

Добавить тестовый код в home.html

Когда я запустил приложение и логин, я всегда увижу часть “see see/admin” независимо от того, могу ли я действительно получить доступ к URL-адресу или нет. Сама оценка роли работает, как и ожидалось, так же как и разрешение на URL (я получаю 403, когда пытаюсь получить к нему доступ с помощью ROLE_USER).

Если я добавлю атрибут dummy privilegeEvaluator в конфигурацию веб-безопасности, которая просто возвращает false для каждого запроса, div исчезнет правильно.

Я что-то упустил? Является ли это ожидаемым поведением и что мне нужно определить, чтобы заставить authorize-url работать так, как он использовался при настройке безопасности с помощью xml?

Обновление: обычная аутентификация

Эта проблема связана с базовой проверкой подлинности и ее автоконфигурацией в SpringBootWebSecurityConfiguration:

В SampleMethodSecurityApplication измените порядок ApplicationSecurity, заменив:

и деактивировать базовый Spring boot application.properties

Теперь тег authorize-url будет работать так, как ожидалось, но вы, конечно же, потеряли базовую версию AutoConfiguration.

Оставив security.basic.enabled: true и изменив порядок ApplicationSecurity выше BASIC_AUTH_ORDER, вы оставите вас с обычной аутентификацией вместо входа в форму…

Обновление – PrivilegeEvaluator

Я нашел следующее обходное решение. Просто зарегистрируйте защитный перехватчик вручную в SecurityConfig:

Он позволяет использовать рекомендуемую конфигурацию ACCESS_OVERRIDE_ORDER и http basic. Я разместил более подробную информацию здесь
Любое объяснение, почему это работает, оценено.

использование thymeleaf-extras-springsecurity4 должно решить проблему

Источник

Spring Security hasRole () не работает

я сталкиваюсь с проблемой при использовании Spring Security & & Thymeleaf, особенно при попытке использовать hasRole выражение. Пользователь «admin» имеет роль «ADMIN», но hasRole(‘ADMIN’) решает false в любом случае я пытаюсь это

я включил использовать-выражения в моей безопасности.xml-файл

а также включил SpringSecurityDialect в мой config

все необходимые зависимости в моем pom.xml-файл

и User набор Role s

почему hasRole() не работает?

я ценю вашу помощь, спасибо

решение

7 ответов

попробуйте использовать hasRole внутри HTML-тега.

у меня была такая же проблема с обновлением Spring Security 3.от x до 4.х. Изменение hasRole() до hasAuthority() сделал трюк для меня.

мне пришлось сделать что-то подобное, когда мне нужно было проверить роль пользователя. Я сделал ниже

надеюсь, это кому-то поможет.

у меня недавно была такая же проблема. Что вам нужно сделать, это:

в вашем html добавьте следующие утверждения:

(вы можете изменить между springsecurity4 или springsecurity3 в зависимости от того, что вы используете).

убедитесь, что вы добавили этот ресурс в свои библиотеки. Я использую gradle, но вы можете сделать то же самое с Maven.

Читайте также:  Сломался электрочайник какие могут быть причины

В вашей SpringWebConfiguration класс или xml убедитесь, что вы добавляете диалект для Thymeleaf SpringSecurity: Я использую класс java для конфигурации.

но вы также можете определить, как говорит alexsource: Spring security и Thymeleaf не работает

Я надеюсь, что это работает для вас! Привет!

вам не хватает концепции:

  • если вы используете hasRole(‘ADMIN’) в своем ADMIN Enum должно быть ROLE_ADMIN вместо ADMIN .
  • если вы используете hasAuthority(‘ADMIN’) ваш ADMIN Enum должно быть ADMIN .

весной безопасности, hasRole() это то же самое, что hasAuthority() , а hasRole() карте функции Authority без ROLE_ префикс.

можете ли вы просто попробовать, как показано ниже, без $ < . >.

Я считаю, что вы не префикс ролей с ROLE_ . Если это так, добавьте префикс, как показано ниже

я попал в тот же вопрос, его из-за spring-security 4.0 . Из-за каких-то причин thymeleaf-extras-springsecurity4 не совместим с spring-security 4.0 и thymeleaf 2.x . Поэтому я понизил spring-security версии 3.2.9.RELEASE и он начал работать. Если вы все еще хотите использовать spring-security 4.0 , тогда, возможно, вы можете попробовать поднять thymeleaf-extras-springsecurity4 to 3.0.0.RELEASE и thymeleaf verison к 3.0

или если вы используете приложение spring boot, то ситуация становится более сложной, а затем единственный вариант слева было бы либо понизить spring-security или обновите версию spring boot до 1.4.x (который все еще находится в бета-версии)

в вашем конкретном сценарии внесение приведенных ниже изменений pom должно заставить hasRole работать

Источник

sec:authorize=»isAuthenticated()» no longer works with thymeleaf-extras-springsecurity5 #61

Comments

wimdeblauwe commented Oct 15, 2018 •

I have a Spring Boot 2.0.5 application that uses thymeleaf-extras-springsecurity4 currently. I tried updating to thymeleaf-extras-springsecurity5, by changing the version in my pom.xml to:

In my templates, I have this:

This works perfectly fine with thymeleaf-extras-springsecurity4, but not anymore if I update to thymeleaf-extras-springsecurity5. There are no exceptions, but the content is visbile even if no user is authenticated.

I also changed the declaration from:

But that did not fix it.

Am I doing something wrong? This is a regular Spring MVC application, not using anything reactive.

The text was updated successfully, but these errors were encountered:

danielfernandez commented Oct 15, 2018

I’ve not been able to reproduce this 🙁

Could you please provide a bit more detail on your Spring Security configuration or (ideally) provide a test Spring Boot webapp replicating this issue? One of our sandbox applications does call sec:authorize=»isAuthenticated()» in a Spring MVC environment: https://github.com/thymeleaf/thymeleafsandbox-springsecurity-mvc/blob/3.0-spring5/src/main/resources/templates/index.html#L9-L10 so you could easily use it as a base and maybe modify its Spring Security configuration to resemble yours and try to reproduce the issue. Note it is a Spring Boot 2.1 (snapshot) app, but you can easily modify the pom.xml for it to use Spring Boot 2.0.5.

Читайте также:  Гироскутер не работает один мотор

wimdeblauwe commented Oct 15, 2018 •

Found the issue. With Spring Boot 2.0.5, I rely on Spring Boot to create a SpringSecurityDialect bean. However, by switching to this new thymeleaf-extras-springsecurity5, Spring Boot no longer creates this bean. I noticed the sandbox app has this:

Once I manually added this to my own application, all was fine.

Seems I should probably just wait for Spring Boot 2.0.6 (https://twitter.com/snicoll/status/1051766989667090432) which will fix this automatically.

NOTE: If we are using Thymeleaf in a Spring Boot application, all that will be needed is to add the corresponding Thymeleaf and Spring Security starters to our application as well as the thymeleaf-extras-springsecurity[3|4|5] dependency, and this dialect will be automatically configured for us.

could maybe use some extra info on what the minimum Spring Boot version is to have support for each of the thymeleaf-extras-springsecurity versions?

Источник

sec:authorize и sec:authentication аннотации не работают

У меня есть проект Spring + Thymeleaf со следующим кодом представления.

Атрибуты sec:authorize и sec:authentication работают не так, как ожидалось — div всегда отображается, даже если ни один пользователь не вошел в систему, а span всегда читает «miquel».

Следует соответствующий фрагмент из моего класса контроллера.

Оператор println работает так, как и ожидалось — если ни один пользователь не вошел в систему, он печатает «anonymousUser», в противном случае имя пользователя.

Что я делаю не так?

4 ответа

Я не могу заставить sec:authorize hasRole() работать с иерархией ролей. Если у меня есть пользователь с ролью ROLE_BOSS, который является родителем ROLE_WORKER, то по какой-то причине он ложен. Однако в моих классах обслуживания @PreAuthorize(hasRole(‘ROLE_WORKER’)) действительно работает. Я.

Я хотел бы отобразить изображение на своей странице, Я борюсь с оценкой тега span, который содержит HTTP URL. Я обновил объект аутентификации, чтобы иметь пользовательские поля, такие как image, firstName, lastName и т. д. Так что в основном ниже.

После тщательного сравнения моего приложения с демонстрационным приложением Thymeleaf & Spring Security я обнаружил источник ошибки.

По-видимому, для того, чтобы Thymeleaf обрабатывал атрибуты sec:authorize и sec:authentication , вам необходимо зарегистрировать SpringSecurityDialect в качестве дополнительного диалекта компонента механизма шаблонов.

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

В Spring Boot мне просто нужно было добавить следующую зависимость:

Для версии конфигурации java это сработало и для меня, добавив диалект spring security:

Читайте также:  Как настроить домен для тильды

Кроме того, вы можете очистить кэш шаблона после события аутентификации, чтобы ваш шаблон был повторно обработан с новыми данными аутентификации. Или установите шаблоны, чувствительные к сеансу входа в систему, в некешированное состояние (это то, что я сделал), используя ServletContextTemplateResolver.setNonCacheablePatterns() .

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

Мы пытаемся реализовать некоторые функции в нашем веб-приложении. Мы используем Spring Framework v4.1.1 и Spring Security v3.1.7 для веб-приложения. Мы используем пользовательский поставщик.

В моем текущем проекте spring-boot заголовок для моих представлений содержит следующую инструкцию: . который не работает, когда я.

Я использую Thymleaf в моем spring security simple POC. Ниже приведен мой пример кода в файле home.html. Hello User !i Как избавиться от.

Я не могу заставить sec:authorize hasRole() работать с иерархией ролей. Если у меня есть пользователь с ролью ROLE_BOSS, который является родителем ROLE_WORKER, то по какой-то причине он ложен.

Я хотел бы отобразить изображение на своей странице, Я борюсь с оценкой тега span, который содержит HTTP URL. Я обновил объект аутентификации, чтобы.

Я использую thymeleaf-spring3 2.0.18 и Spring 3.1.1 . Я сделал страницу входа в систему, которая работает нормально, но в то время как другие атрибуты Thymeleaf анализируются, sec:authorize — нет.

Когда я помещаю такие теги на свою страницу: пользователь и администратор будут отображаться во время выполнения в любом случае? xmlns:sec= http:/ / www.springframework.org / безопасность / теги.

Я включил в свою страницу html, чтобы отобразить имя пользователя на моей странице. Я также нахожу

Источник

Thymeleaf: sec: аутентификация обнаруживается в ЛЮБОМ случае, а sec: авторизация ни в каком случае

С другой стороны,

Я пробовал проверить зависимости Maven, конфигурацию Spring MVC, Spring Security Dialect в ServletContextConfig и многие другие ответы, но в моем случае решение не помогло.

Ожидаемый результат (без входа в систему):

аутентификация — не аутентифицирована

авторизовать — не аутентифицирован

Имя пользователя: анонимно

Фактический результат .

аутентификация — не анонимная

аутентификация — не аутентифицирована

2 ответа

Пытаясь найти все больше и больше решений, я нашел то, что мне подходит:

  1. В SecurityConfig.configure() не должно быть чего-то вроде web.ignoring().antMatchers(«/»); .
    То есть страница, к которой вы хотите применить «фильтр авторизации», не должна быть проигнорирована службой безопасности.
  2. Используйте sec:authorize , а не sec:authentication (это вызывает ошибку) в index.html .

Рабочий index.html :

Результат : (при входе в систему)

авторизовать — не анонимно

Имя пользователя: test2

(если не авторизован)

авторизовать — не аутентифицирован

Имя пользователя: anonymousUser

В моем случае использование «Spring Security 5» с «thimeleaf-extras-springsecurity4» вызвало эту проблему. Если вы используете Spring Security 5, используйте вместо этого «тимелеаф-экстра-пружинная безопасность5». (Недавно был выпущен тимелист-extras-springsecurity5)

Источник

Adblock
detector