С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 24.11.2024
Сообщений: 1

Sring security, сижу с этим два вечера уже все перепробовал

24.11.2024, 16:19. Показов 637. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как пофиксить прямую переадресацию с /registration на /login, просто хочу чтобы при нажатии на кнопку регистр, сохранялись данные в БД, как они сейчас и сохраняются но чтобы и не было автоматического перехода на /login.
Код контроллера:
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
package com.example.TestProject.controller;
 
import com.example.TestProject.entity.UserEntity;
import com.example.TestProject.service.UserService;
import lombok.AllArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import javax.validation.Valid;
 
@Controller
@AllArgsConstructor
public class RegistrationController {
    UserService userService;
    @Autowired
    private AuthenticationManager authenticationManager;
    @GetMapping("/registration")
    public String registration(Model model) {
        model.addAttribute("userEntity", new UserEntity());
        return "registration";
    }
 
    @PostMapping("/registration")
    public String registration(
            @Valid @ModelAttribute("userEntity") UserEntity userEntity,
            BindingResult result,
            Model model){
        if (result.hasErrors()){
            return "registration";
        }
        if(userService.isUserExists(userEntity.getUsername(), userEntity.getEmail())){
            model.addAttribute("registrationError",
                    "User with this username or email already exists.");
            return "registration";
        }
        userService.saveUser(userEntity);
 
//        UsernamePasswordAuthenticationToken authToken =
//                new UsernamePasswordAuthenticationToken(userEntity.getUsername(), userEntity.getPassword());
//        Authentication authentication = authenticationManager.authenticate(authToken);
//        SecurityContextHolder.getContext().setAuthentication(authentication);
 
        model.addAttribute("successMessage", "Registration successful!");
        return "registration";
 
    }
}
Файл security:
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
package com.example.TestProject.security;
 
import lombok.AllArgsConstructor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.dao.DaoAuthenticationProvider;
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.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.web.SecurityFilterChain;
 
@EnableWebSecurity
@Configuration
@AllArgsConstructor
public class SecurityConfiguration {
    UserDetailsServiceImpl userDetailsService;
    @Bean
    public BCryptPasswordEncoder encoder(){
        return new BCryptPasswordEncoder();
    }
 
    @Bean
    public AuthenticationManager authManager(HttpSecurity http) throws Exception {
        return http.getSharedObject(AuthenticationManagerBuilder.class).build();
    }
 
    @Bean
    public DaoAuthenticationProvider authenticationProvider() {
        DaoAuthenticationProvider authProvider = new DaoAuthenticationProvider();
        authProvider.setUserDetailsService(userDetailsService);
        authProvider.setPasswordEncoder(encoder());
        return authProvider;
    }
    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http.authorizeHttpRequests((requests)->requests.
                requestMatchers("/registration", "/", "/success").permitAll()
                        .anyRequest().authenticated())
                .formLogin((form)->form
                        .loginPage("/login")
                        .defaultSuccessUrl("/",true)
                        .permitAll())
                .logout((logout) ->logout.permitAll());
        return http.build();
    }
}
и html файл:
HTML5
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
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Registration</title>
</head>
<body>
<form th:action="@{/registration}" method="post" th:object="${userEntity}">
    <div th:if="${registrationError}" class="error">
        <p th:text="${registrationError}"></p>
    </div>
 
    <div th:if="${successMessage}" class="success">
        <p th:text="${successMessage}"></p>
    </div>
 
    <div>
        <label for="username">Username</label>
        <input th:field="*{username}" type="text" id="username">
        <div th:if="${#fields.hasErrors('username')}" th:errors="*{username}"></div>
    </div>
 
    <div>
        <label for="email">Email</label>
        <input th:field="*{email}" type="text" id="email">
        <div th:if="${#fields.hasErrors('email')}" th:errors="*{email}"></div>
    </div>
 
    <div>
        <label for="password">Password</label>
        <input th:field="*{password}" type="password" id="password">
        <div th:if="${#fields.hasErrors('password')}" th:errors="*{password}"></div>
    </div>
 
    <button type="submit" id="registerButton">Register</button>
    <button type="button" onclick="window.location.href='/login'">Log In</button>
</form>
 
<div th:if="${successMessage}" style="color: green;">
    <p th:text="${successMessage}"></p>
</div>
</body>
</html>
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.11.2024, 16:19
Ответы с готовыми решениями:

все перепробовал, ничего не запускается. сижу с безопасного режима
Перестали запускаться фактически все приложения (ауди- видео- плееры, браузеры (mozila,opera, ie). Не вылетают ошибки, просто игнорирование...

? в ответе GET (уже перепробовал все)
Здравствуйте. Есть компонент IdHTTP переименованный в Web. Также есть AnsiString Send,Temp; В Send я собираю по кусочкам адрес для...

Почему не отображается капча, хотя уже все перепробовал менять
&lt;?php session_start(); $Random = rand(10001, 99999); $_SESSION = md5($Random); $im = imagecreatetruecolor(110, 60); ...

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

Звук пропал на ПК, - уже "неделю" не найду ни никакой зацепки. Перепробовал все (
Доброго врмени суток господа. Ситуация у меня и моего железного друга весьма не обычная. :scratch: Много раотаю с ПК но , что бы такого -...

Как работает этот метод? Уже всяко перепробовал
Пытаюсь программно установить метод к какому-нибудь элементу, пишу: Элементы.Дата.УстановитьДействие(&quot;Действие1&quot;, Новый...

Доброго вечера, форумчане. Я уже устал, никак не могу реализовать update в c# на DGV winform с бд mysql
Код на форме для того, чтобы заполнить DGV данными из БД: namespace atp1 { public partial class Form5 : Form { ...

Achtung! Перевод из паскаля в бейсик уже 3 часа сижу
Люди добрые, помогите перевести сие творение ку бейсик. const n=5; var a,b:arrayof integer; c:arrayof integer; ...

Что делать, не знаю, уже столько вариантов перепробовал, не могу найти решение
Дан масив A( N x M) с элементами целого типа. Написать программу для вычисления количества элементов в массиве, которые являються...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru