powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как сделать код короче?
15 сообщений из 15, страница 1 из 1
Как сделать код короче?
    #39198828
wvetal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Использую Spring Security, настраиваю права доступа.

Вот код:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
http
.httpBasic().and()
.authorizeRequests()
	
	//как переписать код, чтоб не пришлось писать 100 однотипных строчек?
	.antMatchers("/rep/001/*.pdf").hasRole("001")
	.antMatchers("/rep/002/*.pdf").hasRole("002")
	//...
	.antMatchers("/rep/100/*.pdf").hasRole("100")

	
	.antMatchers("/app/index.html", "/").permitAll()
	.antMatchers("/logout").permitAll()
	.anyRequest()
	.authenticated().and()
	.logout().permitAll().and()
	.addFilterBefore(filter,CsrfFilter.class)
	.addFilterAfter(new CsrfHeaderFilter(), CsrfFilter.class);


Как переписать код, чтоб не пришлось писать 100 однотипных строчек?
...
Рейтинг: 0 / 0
Как сделать код короче?
    #39198833
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wvetal,

если они реально однотипные, может быть так?

Код: java
1.
2.
3.
for (int x = 1; x < 101; x++){
   .antMatchers("/rep/" + x + "/*.pdf").hasRole(x)
}



Ну, и конечно, "x" нужно отформатировать как вам надо.
...
Рейтинг: 0 / 0
Как сделать код короче?
    #39198849
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wvetal,

Я бы ещё на вот это обратил внимание:
http://stackoverflow.com/a/27649847
...
Рейтинг: 0 / 0
Как сделать код короче?
    #39198923
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как сделать код короче?
    #39198934
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UsmanС/С++ -ки меня поймут:

https://github.com/raydac/java-comment-preprocessor#the-main-idea
Скажем дружно - нам не нужно.
...
Рейтинг: 0 / 0
Как сделать код короче?
    #39198936
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczUsmanС/С++ -ки меня поймут:

https://github.com/raydac/java-comment-preprocessor#the-main-idea
Скажем дружно - нам не нужно.Забыл смайлик поставить
...
Рейтинг: 0 / 0
Как сделать код короче?
    #39199080
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczUsmanС/С++ -ки меня поймут:

https://github.com/raydac/java-comment-preprocessor#the-main-idea
Скажем дружно - нам не нужно.
Авот и нет
Код: plaintext
1.
#define const public static final
...
Рейтинг: 0 / 0
Как сделать код короче?
    #39199082
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wvetal, это... а зачем эта 100 ролей? Это че за такое понимаешь разэдакое?
...
Рейтинг: 0 / 0
Как сделать код короче?
    #39199315
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonwvetal, это... а зачем эта 100 ролей? Это че за такое понимаешь разэдакое?


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
  
  @Override
    public void configure(WebSecurity web) throws Exception {
        web
                .ignoring()
                .antMatchers("/")
                .antMatchers("/media/**/*.{js,html,css}")
                .antMatchers("/favicon.ico", "/about");
    }



вопрос в тему :

почему такое не работает .{js,html,css} ? что не так ?

.antMatchers("/media/**/*.{js,html,css}")
...
Рейтинг: 0 / 0
Как сделать код короче?
    #39199319
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1,

Может лучше regexMatchers заюзать ?
Паттерн придется подправить
...
Рейтинг: 0 / 0
Как сделать код короче?
    #39199362
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знаю, он-же добавляет не просто набор АнтМатчеров а связку АнтМатчер + Роль.
Наверное имеет смысл просто написать свою реализацию билдера для http
и включить туда добавление таблицы матчеры и роли.
...
Рейтинг: 0 / 0
Как сделать код короче?
    #39199402
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Там же есть метод hasAnyRole(String... roles) . Интересно, может такое сработает:
Код: java
1.
2.
.antMatchers("/rep/001/*.pdf", "/rep/002/*.pdf", "/rep/003/*.pdf", "...")
.hasAnyRole("001", "002", "003", "...");

?
...
Рейтинг: 0 / 0
Как сделать код короче?
    #39199508
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usman,


Это как? каким образом?
...
Рейтинг: 0 / 0
Как сделать код короче?
    #39199531
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1Usman,
Это как? каким образом?
своя функция, а внутри
18968818
))
...
Рейтинг: 0 / 0
Как сделать код короче?
    #39199550
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123своя функция

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
/**
 * Maps a {@link List} of
 * {@link org.springframework.security.web.util.matcher.AntPathRequestMatcher}
 * instances that do not care which {@link HttpMethod} is used.
 *
 * @param antPatterns the ant patterns to create
 * {@link org.springframework.security.web.util.matcher.AntPathRequestMatcher} from
 *
 * @return the object that is chained after creating the {@link RequestMatcher}
 */
public C antMatchers(String... antPatterns) {
	return chainRequestMatchers(RequestMatchers.antMatchers(antPatterns));
}

и
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
/**
 * Shortcut for specifying URLs require any of a number of roles. If you do not
 * want to have "ROLE_" automatically inserted see
 * {@link #hasAnyAuthority(String...)}
 *
 * @param roles the roles to require (i.e. USER, ADMIN, etc). Note, it should not
 * start with "ROLE_" as this is automatically inserted.
 * @return the {@link ExpressionUrlAuthorizationConfigurer} for further
 * customization
 */
public ExpressionInterceptUrlRegistry hasAnyRole(String... roles) {
	return access(ExpressionUrlAuthorizationConfigurer.hasAnyRole(roles));
}


Это решение скорее всего будет неправильным, т.к. matcher может сопоставиться не с той ролью
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Как сделать код короче?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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