Форум программистов, компьютерный форум, киберфорум
Java: Spring, Spring Boot
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
2 / 2 / 2
Регистрация: 20.01.2017
Сообщений: 41

Настройка spring security. AuthenticationManager

21.02.2017, 13:40. Показов 2896. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Где необходимо описать AuthenticationManager ?

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
43
44
45
46
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.stereotype.Service;
 
@Service
public class SecurityServiceImpl implements SecurityService {
 
    private static final Logger logger = LoggerFactory.getLogger(SecurityServiceImpl.class);
 
    @Autowired
    private AuthenticationManager authenticationManager;
 
    @Autowired
    private UserDetailsService userDetailsService;
 
    @Override
    public String findLoggedInUsername() {
        Object userDetails = SecurityContextHolder.getContext().getAuthentication().getDetails();
        if (userDetails instanceof UserDetails) {
            return ((UserDetails) userDetails).getUsername();
        }
 
        return null;
    }
 
    @Override
    public void autoLogin(String username, String password) {
        UserDetails userDetails = userDetailsService.loadUserByUsername(username);
        UsernamePasswordAuthenticationToken authenticationToken =
                new UsernamePasswordAuthenticationToken(userDetails, password, userDetails.getAuthorities());
 
        authenticationManager.authenticate(authenticationToken);
 
        if (authenticationToken.isAuthenticated()) {
            SecurityContextHolder.getContext().setAuthentication(authenticationToken);
 
            logger.debug(String.format("Successfully %s auto logged in", username));
        }
    }
}
WebSecurityConfig
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
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 
@Configuration
@EnableWebSecurity
public class WebSecurityConfig  extends WebSecurityConfigurerAdapter {
    @Autowired
    private UserDetailsService userDetailsService;
 
    @Bean
    public BCryptPasswordEncoder bCryptPasswordEncoder() {
        return new BCryptPasswordEncoder();
    }
 
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .authorizeRequests()
                .antMatchers("/resources/**", "/registration").permitAll()
                .anyRequest().authenticated()
                .and()
                .formLogin()
                .loginPage("/login")
                .permitAll()
                .and()
                .logout()
                .permitAll();
    }
 
    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userDetailsService).passwordEncoder(bCryptPasswordEncoder());
    }
}
Controller
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import com.cat.server.entity.User;
import com.cat.server.service.SecurityService;
import com.cat.server.service.UserService;
import com.cat.server.validator.UserValidator;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
 
@RestController
public class UserController {
    @Autowired
    private UserService userService;
 
    @Autowired
    private SecurityService securityService;
 
    @Autowired
    private UserValidator userValidator;
 
    @RequestMapping(value = "/registration", method = RequestMethod.GET)
    public String registration(Model model) {
        model.addAttribute("userForm", new User());
 
        return "registration";
    }
 
    @RequestMapping(value = "/registration", method = RequestMethod.POST)
    public String registration(@ModelAttribute("userForm") User userForm, BindingResult bindingResult, Model model) {
        userValidator.validate(userForm, bindingResult);
 
        if (bindingResult.hasErrors()) {
            return "registration";
        }
 
        userService.save(userForm);
 
        securityService.autoLogin(userForm.getUsername(), userForm.getConfirmPassword());
 
        return "redirect:/welcome";
    }
 
    @RequestMapping(value = "/login", method = RequestMethod.GET)
    public String login(Model model, String error, String logout) {
        if (error != null) {
            model.addAttribute("error", "Username or password is incorrect.");
        }
 
        if (logout != null) {
            model.addAttribute("message", "Logged out successfully.");
        }
 
        return "login";
    }
 
    @RequestMapping(value = {"/", "/welcome"}, method = RequestMethod.GET)
    public String welcome(Model model) {
        return "welcome";
    }
 
    @RequestMapping(value = "/admin", method = RequestMethod.GET)
    public String admin(Model model) {
        return "admin";
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.02.2017, 13:40
Ответы с готовыми решениями:

Настройка spring security. создание AuthenticationManager
Что необходимо для создания AuthenticationManager и как связать аутентификацию(т.е. как раз AuthenticationManager) с маппингом /login(куда...

Настройка Spring-security
Здравствуйте. Помогите, пожалуйста, подключить к моему прилложение spring-security. Итак, я: 1) Прописал фреймворк в pom, web. 2)...

Настройка spring boot security
Всем привет! Подскажите пожалуйста, как настроить security конфиг, если веб запущен отдельно от бека. Сейчас у меня настройки, когда веб...

5
1 / 1 / 0
Регистрация: 28.01.2017
Сообщений: 3
10.11.2018, 21:22
Проблема решена?
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
11.11.2018, 08:02
YoungProger, нет конечно, человек 2 года ждёт, пока ты поможешь
0
1 / 1 / 0
Регистрация: 28.01.2017
Сообщений: 3
17.11.2018, 22:30
Спасибо, всем домом посмеялись над шуткой, соседка аж хрюкать начала.

Столкнулся с подобной проблемой, искал ответ. Считаю, что человек, создавая тему, оставляет после себя наследие будущему поколению программистов, поэтому неплохо бы, чтобы в теме в том или ином виде оставался ответ на освещенную проблему, или хотя бы зацепки к решению.

С уважением.
1
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
17.11.2018, 23:04
Цитата Сообщение от YoungProger Посмотреть сообщение
посмеялись над шуткой
Аж неделю смеялись)

Цитата Сообщение от YoungProger Посмотреть сообщение
Столкнулся с подобной проблемой
Что делаете? Какая ошибка возникает?

Добавлено через 1 минуту
Цитата Сообщение от YoungProger Посмотреть сообщение
зацепки к решению
GETTING STARTED Securing a Web Application
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
19.11.2018, 20:23

Не по теме:

Цитата Сообщение от YoungProger Посмотреть сообщение
Считаю, что человек, создавая тему, оставляет после себя наследие будущему поколению программистов, поэтому неплохо бы, чтобы в теме в том или ином виде оставался ответ на освещенную проблему, или хотя бы зацепки к решению.
Золотые слова!


0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.11.2018, 20:23
Помогаю со студенческими работами здесь

Jetty embedded + Spring MVC + Spring Security
Добрый день. По роду работы приходилось писать на JavaSE, в том числе и сложные клиент/серверные программы. Использовал Netty, Apache...

Spring. Тесты и Spring-security
Вопрос из области почему так. Есть у меня такой вот тест: @ContextConfiguration(locations =...

Spring Security
Добрый день. Использую SpringSecurity: protected void configure(HttpSecurity http) throws Exception { ...

Spring security c 3 на 4
Не знаю почему, но после того, как перешел на spring security 4 возникает проблема. Захожу на страницу логина, ввожу имя и пароль....

Spring Security email
Добрый день. При регистрации пользователя он заполняет такие поля: name, password, email. В html его приветствую так: <div...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru