powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring Security ограничить доступ к разделу
10 сообщений из 10, страница 1 из 1
Spring Security ограничить доступ к разделу
    #38269973
MarMot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!

Конфигурация spring security:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:security="http://www.springframework.org/schema/security"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
                           http://www.springframework.org/schema/security
                           http://www.springframework.org/schema/security/spring-security-3.1.xsd">

	<security:global-method-security
		secured-annotations="enabled" />

	<security:http auto-config="false" access-denied-page="/index.html">

		<security:intercept-url pattern="/PNG/**"
			access="ROLE_USER" />

		<security:intercept-url pattern="/upload/**"
			access="ROLE_ADMINISTRATOR" />
		<security:intercept-url pattern="/admin/**"
			access="ROLE_ADMINISTRATOR" />
		<security:intercept-url pattern="/personalaccount.html"
			access="ROLE_USER, ROLE_READER, ROLE_ADMINISTRATOR" />

		<security:form-login login-page="/login.html"
			authentication-success-handler-ref="authenticationSuccessHandler"
			authentication-failure-handler-ref="authenticationFailureHandler" />
		<security:logout logout-url="/logout"
			logout-success-url="/index.html" />
		<security:intercept-url pattern="/**"
			access="IS_AUTHENTICATED_ANONYMOUSLY" />
	</security:http>
	...
</beans>



Сейчас доступ к разделу /PNG/* есть только у ROLE_USER

Код: xml
1.
2.
<security:intercept-url pattern="/PNG/**"
			access="ROLE_USER" />



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

Спасибо.
...
Рейтинг: 0 / 0
Spring Security ограничить доступ к разделу
    #38270362
Adva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Spring Security ограничить доступ к разделу
    #38270608
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Использовать классификацию не по имени, а Authority (public enum Authority implements GrantedAuthority {}), назначенный юзерам по критериям. Конфиг подправить:
Код: xml
1.
2.
3.
4.
5.
...
<security:http auto-config="false" use-expressions="true">
    ..
</security:http>
...

и использовать expressions:
Код: xml
1.
<security:intercept-url pattern="/PNG/**" access="hasRole('VSE_PETI', 'VSE_VASI')"/>


2. Раз уж ты все равно отдаешь содержимое "/PNG/**" после Spring Security, то можно отдавать контроллером:
Код: java
1.
2.
3.
4.
@RequestMapping(value = "/PNG/{fileName}", method = RequestMethod.GET)
public ModelAndView profile(@PathVariable String fileName, Authentication authentication) throws IOException {
    //получаем юзера из authentication, смотрим права и отдаем содержимое
}


3. Конфиг как в (1) и использовать @PreAuthorize("hasRole('VSE_PETI', 'VSE_VASI')") перед методом контроллера из (2).
...
Рейтинг: 0 / 0
Spring Security ограничить доступ к разделу
    #38270687
MarMot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruck1. Использовать классификацию не по имени, а Authority (public enum Authority implements GrantedAuthority {}), назначенный юзерам по критериям. Конфиг подправить:
Код: xml
1.
2.
3.
4.
5.
...
<security:http auto-config="false" use-expressions="true">
    ..
</security:http>
...

и использовать expressions:
Код: xml
1.
<security:intercept-url pattern="/PNG/**" access="hasRole('VSE_PETI', 'VSE_VASI')"/>


2. Раз уж ты все равно отдаешь содержимое "/PNG/**" после Spring Security, то можно отдавать контроллером:
Код: java
1.
2.
3.
4.
@RequestMapping(value = "/PNG/{fileName}", method = RequestMethod.GET)
public ModelAndView profile(@PathVariable String fileName, Authentication authentication) throws IOException {
    //получаем юзера из authentication, смотрим права и отдаем содержимое
}


3. Конфиг как в (1) и использовать @PreAuthorize("hasRole('VSE_PETI', 'VSE_VASI')") перед методом контроллера из (2).

Спасбо, но тут не получится разделить пользователей по группам.
Например, если у пользователя есть определенный период пользования ресурсами в PNG, то надо в зависимости от данных в БД и текущей даты разрешить или запретить доступ.
...
Рейтинг: 0 / 0
Spring Security ограничить доступ к разделу
    #38270728
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, тогда можно попробовать (2): главное - определить кто и решить, отдавать ли контент.
...
Рейтинг: 0 / 0
Spring Security ограничить доступ к разделу
    #38270935
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MarMotIDVsbruck1. Использовать классификацию не по имени, а Authority (public enum Authority implements GrantedAuthority {}), назначенный юзерам по критериям. Конфиг подправить:
Код: xml
1.
2.
3.
4.
5.
...
<security:http auto-config="false" use-expressions="true">
    ..
</security:http>
...

и использовать expressions:
Код: xml
1.
<security:intercept-url pattern="/PNG/**" access="hasRole('VSE_PETI', 'VSE_VASI')"/>


2. Раз уж ты все равно отдаешь содержимое "/PNG/**" после Spring Security, то можно отдавать контроллером:
Код: java
1.
2.
3.
4.
@RequestMapping(value = "/PNG/{fileName}", method = RequestMethod.GET)
public ModelAndView profile(@PathVariable String fileName, Authentication authentication) throws IOException {
    //получаем юзера из authentication, смотрим права и отдаем содержимое
}


3. Конфиг как в (1) и использовать @PreAuthorize("hasRole('VSE_PETI', 'VSE_VASI')") перед методом контроллера из (2).

Спасбо, но тут не получится разделить пользователей по группам.
Например, если у пользователя есть определенный период пользования ресурсами в PNG, то надо в зависимости от данных в БД и текущей даты разрешить или запретить доступ.

Тогда получается, что на каждого пользователя надо заводить профайл или хранить его в данных сессии и в фильтер чейн проверять авторизацию.

К сожалению я делал это вручную без спринга, но базовый подход вроде как должен работать и в спринге

http://static.springsource.org/spring-security/site/docs/3.0.x/reference/security-filter-chain.html
...
Рейтинг: 0 / 0
Spring Security ограничить доступ к разделу
    #38271063
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К слову сказать здесь перцы на стоковерфло обсуждают что-то рядом

http://stackoverflow.com/questions/7470405/authenticationsuccesshandler-example-for-spring-security-3
нужно обернуть AuthenticationSuccessHandler и вставить свою логику походу

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
public class Test implements AuthenticationSuccessHandler {
    public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) {
        Set<String> roles = AuthorityUtils.authorityListToSet(authentication.getAuthorities());
        if (roles.contains("ROLE_USER") {
            response.sendRedirect("/userpage");
        }
    }
}
...
Рейтинг: 0 / 0
Spring Security ограничить доступ к разделу
    #38271064
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: xml
1.
2.
		<security:intercept-url pattern="/**"
			access="IS_AUTHENTICATED_ANONYMOUSLY" />



Не забудьте, что все остальное залогиненный юзер не увидит надо добавить вроде как через запятую другие роли которые разрешены.
http://forum.springsource.org/showthread.php?116667-how-to-bypass-lt-intercept-url-pattern-quot-trusted-**-quot-access-quot-ROLE_USER-SCOPE_TRUST-quot
...
Рейтинг: 0 / 0
Spring Security ограничить доступ к разделу
    #38271073
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergunka
Код: xml
1.
2.
		<security:intercept-url pattern="/**"
			access="IS_AUTHENTICATED_ANONYMOUSLY" />



Не забудьте, что все остальное залогиненный юзер не увидит надо добавить вроде как через запятую другие роли которые разрешены.
http://forum.springsource.org/showthread.php?116667-how-to-bypass-lt-intercept-url-pattern-quot-trusted-**-quot-access-quot-ROLE_USER-SCOPE_TRUST-quot

Правильная ссылка

http://stackoverflow.com/questions/12035099/spring-security-intercept-url-roles
...
Рейтинг: 0 / 0
Spring Security ограничить доступ к разделу
    #38280323
MarMot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем, решил сделать лучше обычный Spring-овый interceptor, но столкнулся с некоторой проблемой

http://www.sql.ru/forum/1026275-a/spring-interceptor-404-pri-sozdanii-novogo-fayla
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring Security ограничить доступ к разделу
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]