powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring Security, можно-ли использовать annotated service bean (@Service)
25 сообщений из 27, страница 1 из 2
Spring Security, можно-ли использовать annotated service bean (@Service)
    #37765632
ccoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть код
Код: java
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.
35.
36.
37.
38.
39.
40.
41.
42.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:security="http://www.springframework.org/schema/security"
 xsi:schemaLocation="http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
   http://www.springframework.org/schema/security
   http://www.springframework.org/schema/security/spring-security-3.0.xsd">
  
 <!-- This is where we configure Spring-Security  -->
 <security:http auto-config="true" use-expressions="true" access-denied-page="/krams/auth/denied" >
  
  <security:intercept-url pattern="/krams/auth/login" access="permitAll"/>
  <security:intercept-url pattern="/krams/main/admin" access="hasRole('ROLE_ADMIN')"/>
  <security:intercept-url pattern="/krams/main/common" access="hasRole('ROLE_USER')"/>
   
  <security:form-login
    login-page="/krams/auth/login"
    authentication-failure-url="/krams/auth/login?error=true"
    default-target-url="/krams/main/common"/>
    
  <security:logout
    invalidate-session="true"
    logout-success-url="/krams/auth/login"
    logout-url="/krams/auth/logout"/>
  
 </security:http>
  
 <!-- Declare an authentication-manager to use a custom userDetailsService -->
 <security:authentication-manager>
         <security:authentication-provider user-service-ref="customUserDetailsService">
           <security:password-encoder ref="passwordEncoder"/>
         </security:authentication-provider>
 </security:authentication-manager>
  
 <!-- Use a Md5 encoder since the user's passwords are stored as Md5 in the database -->
 <bean class="org.springframework.security.authentication.encoding.Md5PasswordEncoder" id="passwordEncoder"/>
 
 <!-- A custom service where Spring will retrieve users and their corresponding access levels  -->
 <bean id="customUserDetailsService" class="org.krams.tutorial.service.CustomUserDetailsService"/>
  
</beans>


отсуда http://krams915.blogspot.com/2010/12/spring-security-mvc-integration_18.html

Вопрос - можноли вместо <bean id="customUserDetailsService" class="org.krams.tutorial.service.CustomUserDetailsService"/> сделать контролер с анотацией.
Т.е. в моём проекте есть папка services откуда поднимаются контролерры с @Service
И вот оттуда имеено я хотелбы подставить бин
Код: java
1.
<security:authentication-provider user-service-ref="тут">
...
Рейтинг: 0 / 0
Spring Security, можно-ли использовать annotated service bean (@Service)
    #37766123
ccoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нус может кто откликнется, мне это очень актуально
...
Рейтинг: 0 / 0
Spring Security, можно-ли использовать annotated service bean (@Service)
    #37766163
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
customUserDetailsService это реализация UserDetailsService для загрузки информации о пользователе. Это не тот @Service, которых в системе будет много и ради которых нужно сканировать все сервисы. Т.е. даже если делать через аннотации, то имеет смысл прописать класс.
Но если очень нужно, то и через @Service будет работать если правильный id указать.
И зря вы контроллеры с сервисами смешали.
...
Рейтинг: 0 / 0
Spring Security, можно-ли использовать annotated service bean (@Service)
    #37766225
ccoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я для моего случая невижу как сделать

Я значит, хочу смешать сервис с моим. (ведь мне нужно ещё сделать както регистрацию пользователя)

Делаю так и реализовываю loadUserByUsername
Код: java
1.
2.
@Service
public class AccountServiceImpl implements AccountService, UserDetailsService{


далее прописываю
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
 <!-- Declare an authentication-manager to use a custom userDetailsService -->
 <security:authentication-manager>
         <security:authentication-provider user-service-ref="AccountServiceImpl">
           <security:password-encoder ref="passwordEncoder"/>
         </security:authentication-provider>
 </security:authentication-manager>
  
 <!-- Use a Md5 encoder since the user's passwords are stored as Md5 in the database -->
 <bean class="org.springframework.security.authentication.encoding.Md5PasswordEncoder" id="passwordEncoder"/>


и
авторError creating bean with name 'org.springframework.security.authentication.dao.Dao
AuthenticationProvider#0': Cannot resolve reference to bean 'AccountServiceImpl' while setting bean property 'userDetailsService'; nested ex
ception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'AccountServiceImpl' is defined

Нужна помощь, как тут что.....
Т.е. как мне потом сделать регистрацию ещё и чтобы сервис был annotated, так как я его подсаживаю в контролеррах
...
Рейтинг: 0 / 0
Spring Security, можно-ли использовать annotated service bean (@Service)
    #37766233
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вероятно с маленькой буквы стоило написать
user-service-ref="accountServiceImpl"
...
Рейтинг: 0 / 0
Spring Security, можно-ли использовать annotated service bean (@Service)
    #37766236
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или задать имя явно
@Service(value="AccountServiceImpl")
это id бина и он у вас не совпадает.
...
Рейтинг: 0 / 0
Spring Security, можно-ли использовать annotated service bean (@Service)
    #37766257
ccoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О работает. Спасибо большое.
...
Рейтинг: 0 / 0
Spring Security, можно-ли использовать annotated service bean (@Service)
    #37766260
ccoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как рекомендуете регистрацию нового пользователя сделать?
Мой вариант у меня самого вызывает опасение что я не так делаю
...
Рейтинг: 0 / 0
Spring Security, можно-ли использовать annotated service bean (@Service)
    #37766279
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ccoderА как рекомендуете регистрацию нового пользователя сделать?
Рекомендую сделать хорошо и чтобы работало.

ccoderМой вариант у меня самого вызывает опасение что я не так делаю
Это очень информативно. Техническая проблема какая?
...
Рейтинг: 0 / 0
Spring Security, можно-ли использовать annotated service bean (@Service)
    #37766332
ccoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ccoderМой вариант у меня самого вызывает опасение что я не так делаю
Это очень информативно. Техническая проблема какая?[/quot]
Тогда какбы всё. СПАСИБО
...
Рейтинг: 0 / 0
Spring Security, можно-ли использовать annotated service bean (@Service)
    #37766342
ccoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А кстати я насчет
Код: java
1.
2.
3.
         <security:authentication-provider user-service-ref="AccountServiceImpl">
           <security:password-encoder ref="passwordEncoder"/>
         </security:authentication-provider>


passwordEncoder хочу спросить.
Вы можете описать коротко как он работает.

Т.е. мне нужно когдя я регистрирую пользователя переводить пароль через
Код: java
1.
2.
3.
private PasswordEncoder encoder = new Md5PasswordEncoder();

u.setPassword(encoder.encodePassword(plainTextPassword, username));



а как он тут расшифровываться будет?

Т.е. что подразумевается под
Код: java
1.
<security:password-encoder ref="passwordEncoder"/>
...
Рейтинг: 0 / 0
Spring Security, можно-ли использовать annotated service bean (@Service)
    #37766352
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пароли не расшифровываются. Берется ввод пользователя, для него делается такой же hash и сравнивается сам hash.
Таким образом система не знает паролей пользователей и их нельзя увести. Ну, и стоит напомнить что чистый MD5 сейчас подбирается на ура. Не забывайте солить.
...
Рейтинг: 0 / 0
Spring Security, можно-ли использовать annotated service bean (@Service)
    #37766384
ccoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как их зашифровывать когда нужно добавить нового пользователя?

Т.е. нужно "ручным" способом это всё делать
Код: java
1.
2.
3.
4.
5.
private PasswordEncoder encoder = new Md5PasswordEncoder();

u.setPassword(encoder.encodePassword(plainTextPassword, username));

и далее сохранять в DB
...
Рейтинг: 0 / 0
Spring Security, можно-ли использовать annotated service bean (@Service)
    #37766390
ccoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тут
(plainTextPassword, username )
это то чем солятся? :)
...
Рейтинг: 0 / 0
Spring Security, можно-ли использовать annotated service bean (@Service)
    #37766392
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ccoder
Код: java
1.
private PasswordEncoder encoder = new Md5PasswordEncoder();


Да. Только вместо вот этой фигни что вы написали нужно делать инъекцию текущего энкодера спрингом.
...
Рейтинг: 0 / 0
Spring Security, можно-ли использовать annotated service bean (@Service)
    #37766543
ccoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё один момент есть про который я очень хочу спросить.

у меня пользователь после авторизации получает свой личный объект и он должен присутствовать на всех станицах для пользователя.
например если
Код: java
1.
<security:intercept-url pattern="/krams/main/common" access="hasRole('ROLE_USER')"/>


то на всех контролерров которые замапины автор/krams/main/common/.......
я должен иметь этот объект (при этом для конкретного пользователя)
(сам объект берётся из базы данных при авторизации)

Есть-ли чтото тут предусмотренного для этого случая?
...
Рейтинг: 0 / 0
Spring Security, можно-ли использовать annotated service bean (@Service)
    #37766554
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UserDetailsService -> UserDetails чем не устраивает?
...
Рейтинг: 0 / 0
Spring Security, можно-ли использовать annotated service bean (@Service)
    #37766591
ccoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. туда можно както добавить свой ещё один объект?
Имею ввиду
Код: java
1.
2.
	public UserDetails loadUserByUsername(String username)
			throws UsernameNotFoundException {



А как его потом получить в котролерре?
...
Рейтинг: 0 / 0
Spring Security, можно-ли использовать annotated service bean (@Service)
    #37766623
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UserDetails это интерфейс. Вы его реализуете с любыми данными, которые пожелаете загрузить.

Доставать вот так:
http://stackoverflow.com/questions/6161985/get-userdetails-object-from-security-context-in-spring-mvc-controller
или вот так
http://stackoverflow.com/questions/248562/when-using-spring-security-what-is-the-proper-way-to-obtain-current-username-i
...
Рейтинг: 0 / 0
Spring Security, можно-ли использовать annotated service bean (@Service)
    #37766666
ccoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВы его реализуете с любыми данными, которые пожелаете загрузить.
Т.е. нужно унаследовать UserDetails?
...
Рейтинг: 0 / 0
Spring Security, можно-ли использовать annotated service bean (@Service)
    #37766680
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ccoderТ.е. нужно унаследовать UserDetails?
Интерфейсы не наследуют.
...
Рейтинг: 0 / 0
Spring Security, можно-ли использовать annotated service bean (@Service)
    #37766740
ccoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я тогда вот это не понял
По идее я сам объект отдаю тут
Код: java
1.
2.
	public UserDetails loadUserByUsername(String username)
			throws UsernameNotFoundException {


и потом Hibernate Security у него берёт login и password, то как тогда мне в него добавить свой объект?
...
Рейтинг: 0 / 0
Spring Security, можно-ли использовать annotated service bean (@Service)
    #37766742
ccoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При этом мой объект является domain, т.е. через mapping в hibernate я храню его в базе данных
...
Рейтинг: 0 / 0
Spring Security, можно-ли использовать annotated service bean (@Service)
    #37767086
ccoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите понять что означает
авторorg.springframework.security.authentication.LockedException
В доках
авторThrown if an authentication request is rejected because the account is locked. Makes no assertion as to whether or not the credentials were valid.
И всёравно не понимаю что это такое и откуда берётся. (получаю при логине с spring security)
...
Рейтинг: 0 / 0
Spring Security, можно-ли использовать annotated service bean (@Service)
    #37767089
ccoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняюсь, нашел.
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring Security, можно-ли использовать annotated service bean (@Service)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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