Форум программистов, компьютерный форум, киберфорум
Java: Spring, Spring Boot
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/25: Рейтинг темы: голосов - 25, средняя оценка - 4.96
0 / 0 / 1
Регистрация: 06.10.2015
Сообщений: 70

Spring Security login post not supported

27.03.2017, 02:21. Показов 4939. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравстуйте. ***-ый день бьюсь в проекте с тем, что не могу сделать нормальный sign in в систему, не получается объяснить spring, что делать.
Java
1
2
3
4
5
6
7
8
9
10
11
http.formLogin()
                // указываем страницу с формой логина
                .loginPage( "/login" ).defaultSuccessUrl( "/login?success" )
                // указываем action с формы логина
                .loginProcessingUrl( "/login" )
                // указываем URL при неудачном логине
                .failureUrl( "/login?error" )
                // Указываем параметры логина и пароля с формы логина
                .usernameParameter( "login" ).passwordParameter( "password" )
                // даем доступ к форме логина всем
                .permitAll();
хочу, чтобы после того, как данные входа подтвердятся, он переходил по url "login?success", где его уже ждет
Java
1
2
3
4
5
6
7
@RequestMapping( value = { "/login?success" }, method = RequestMethod.GET )
    public String loginSuccess( Model model ){
        User user = ( User ) org.springframework.security.core.context.SecurityContextHolder.getContext().getAuthentication().getPrincipal();
        model.addAttribute( "principalLogin", user.getLogin() );
        model.addAttribute( "principalRole", user.getRole().name() );
        return "index";
    }
как я понимаю, логин должен прилетать сюда
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
@Override
    public Optional<User> getUserByLogin( String login ){
 
//        Для тестирования ненайденного пользователя
        if( login.equals( "anon" ) )
            return Optional.empty();
 
        // TODO: 21.03.17 Брать пользователя из БД
        User user = new User();
        user.setLogin( login );
        user.setName( "name" );
        user.setLastName( "lastName" );
        // TODO: 21.03.17 Salt by user id
        user.setPassword( passwordEncoder.encodePassword( "1234", null ) );
        switch( login ){
            case "admin":
                user.setRole( UserRoles.ADMIN );
                break;
            case "user":
                user.setRole( UserRoles.USER );
                break;
 
            default:
                user.setRole( UserRoles.ANONYMOUS );
        }
        // TODO: 24.03.17 Fix
        user.setSurveys( surveyService.getListSurveys() );
        return Optional.of( user );
    }
, где создается пользователь с введенным именем, его пароль 1234.
НО! как я ни стараюсь, по ссылке мне выдает, что метод пост не поддерживается ( правильно, в контроллере же его нет, но я думал spring security сам создает такой контроллер в настройках ).
Если что, весь код проекта здесь https://github.com/GordPavel/Survey/tree/Gordeev
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.03.2017, 02:21
Ответы с готовыми решениями:

Spring Security Как реализовать login контроллер
При аутентификации пользователя я получаю куки, который я использую для авторизации и дальнейшего использования некоторых контроллеров....

Spring security custom login page error
день добрый. есть небольшие косяки с работой спринг секюрити. при заллогивании через http://localhost:8080/login входит в админку...

Spring security: Pre/Post Authorize
Добавляю security к своему REST'ful веб сервису, настроил следующим образом: @Configuration @EnableWebSecurity public class...

12
Эксперт Java
378 / 370 / 114
Регистрация: 30.06.2010
Сообщений: 1,445
27.03.2017, 05:57
как и что на сервер постишь?
0
0 / 0 / 1
Регистрация: 06.10.2015
Сообщений: 70
27.03.2017, 07:10  [ТС]
LeX, mavenом собираю package, сервер tomcat, захожу через localhost/manager и там заливаю war
0
Эксперт Java
378 / 370 / 114
Регистрация: 30.06.2010
Сообщений: 1,445
27.03.2017, 08:19
Paevl, при авторизации что постишь?
0
0 / 0 / 1
Регистрация: 06.10.2015
Сообщений: 70
27.03.2017, 10:44  [ТС]
LeX, что ты имеешь ввиду? Что пишу в поля ввода при авторизации? admin, 1234
0
Эксперт Java
378 / 370 / 114
Регистрация: 30.06.2010
Сообщений: 1,445
30.03.2017, 07:46
Цитата Сообщение от Paevl Посмотреть сообщение
.loginProcessingUrl( "/login" )
попробуй сделать /api/login и соответственно с клиента постить данные именно на него
0
0 / 0 / 1
Регистрация: 06.10.2015
Сообщений: 70
30.03.2017, 11:30  [ТС]
LeX, 404 Not Found
The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.
Видимо потому что нет контроллера в IndexController на /api/login
0
Эксперт Java
378 / 370 / 114
Регистрация: 30.06.2010
Сообщений: 1,445
30.03.2017, 19:04
Цитата Сообщение от Paevl Посмотреть сообщение
Видимо потому что нет контроллера в IndexController на /api/login
он не нужен.
Цитата Сообщение от Paevl Посмотреть сообщение
.loginProcessingUrl( "/api/login" )
это url внутреннего апи спринга, куда через POST отправляются данные аутентификации
Цитата Сообщение от Paevl Посмотреть сообщение
.defaultSuccessUrl( "/login?success" )
при удаче сюда будет редирект, поэтому через ajax без доработки сервера данные аутентификации слать не надо. надо делать POST из формы
и да, лучше перенаправлять куда-либо, но не на login?success
0
0 / 0 / 1
Регистрация: 06.10.2015
Сообщений: 70
30.03.2017, 19:13  [ТС]
LeX, я понимаю, что это должно так быть, но почему-то это не срабатывает. Я нашёл проект, в котором так и работает - за весь день не нашёл разницы в конфигурациях. ������*♂️
0
Эксперт Java
378 / 370 / 114
Регистрация: 30.06.2010
Сообщений: 1,445
30.03.2017, 19:41
показывай свою конфигурацию, что уходит в POST на сервер и ошибку
0
0 / 0 / 1
Регистрация: 06.10.2015
Сообщений: 70
30.03.2017, 22:33  [ТС]
LeX,
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
package ru.ssau.config;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.encoding.ShaPasswordEncoder;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
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 ru.ssau.service.secure.UserDetailsServiceImpl;
 
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity( securedEnabled = true )
public class SecurityConfig extends WebSecurityConfigurerAdapter{
 
    @Autowired
    private UserDetailsServiceImpl userDetailsService;
 
    // регистрируем нашу реализацию UserDetailsService
    // а также PasswordEncoder для приведения пароля в формат SHA1
    @Autowired
    public void registerGlobalAuthentication( AuthenticationManagerBuilder auth ) throws Exception{
        auth.userDetailsService( userDetailsService ).passwordEncoder( getShaPasswordEncoder() );
    }
 
    @Override
    protected void configure( HttpSecurity http ) throws Exception{
        http.csrf().disable().authorizeRequests().antMatchers( "/resources/**",
                                                               "/**" ).permitAll().anyRequest().permitAll().and();
 
        http.formLogin().loginPage( "/login" ).loginProcessingUrl( "/j_spring_security_check" ).failureUrl(
                "/login?error" ).usernameParameter( "username" ).passwordParameter( "password" ).permitAll();
 
        http.logout().permitAll().logoutUrl( "/logout" ).logoutSuccessUrl( "/login?logout" ).invalidateHttpSession(
                true );
    }
 
    // Указываем Spring контейнеру, что надо инициализировать <b></b>ShaPasswordEncoder
    // Это можно вынести в WebAppConfig, но для понимаемости оставил тут
    @Bean
    public ShaPasswordEncoder getShaPasswordEncoder(){
        return new ShaPasswordEncoder();
    }
}
XML
1
2
3
4
5
6
7
8
9
<div class="container" style="width: 300px;">
    <c:url value="/j_spring_security_check" var="loginUrl" />
    <form action="${loginUrl}" method="post">
        <h2 class="form-signin-heading">Please sign in</h2>
        <input type="text" class="form-control" name="username" placeholder="Email address" required autofocus value="colibri">
        <input type="password" class="form-control" name="password" placeholder="Password" required value="1234">
        <button class="btn btn-lg btn-primary btn-block" type="submit">Войти</button>
    </form>
</div>
HTTP Status 404 – Not Found

Type Status Report

Description The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.

Apache Tomcat/8.5.12
0
Эксперт Java
378 / 370 / 114
Регистрация: 30.06.2010
Сообщений: 1,445
30.03.2017, 22:44
сниффер (например fiddler) какие данные показывает при POST запросе?
0
0 / 0 / 1
Регистрация: 06.10.2015
Сообщений: 70
31.03.2017, 16:26  [ТС]
LeX, посмотрел в chrome, что он отправляет
Request URL:http://localhost:8080/survey/j... rity_check
Request Method:POST
Status Code:404
Remote Address:[::1]:8080
Response Headers
view source
Content-Language:en
Content-Length:1047
Content-Type:text/html;charset=utf-8
Date:Fri, 31 Mar 2017 13:23:36 GMT
Request Headers
view source
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip, deflate, br
Accept-Language:ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
Cache-Control:max-age=0
Connection:keep-alive
Content-Length:28
Content-Type:application/x-www-form-urlencoded
Cookie:JSESSIONID=9E626BBE5116A77DE53FEB A94E8B4A09
Host:localhost:8080
Origin:http://localhost:8080
Referer:http://localhost:8080/survey/login
Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36
Form Data
view source
view URL encoded
username:admin
password:1234
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.03.2017, 16:26
Помогаю со студенческими работами здесь

Spring MVC+Thymeleaf ошибка редактирования записи "Request method 'POST' not supported"
Всем доброго времени суток! Прошу помощи по следующей проблеме: Есть табличка с записями БД, для каждой записи ссылка на...

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

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

[Spring MVC] Login Bean
В одном из туториалов по Spring MVC авторы используют LoginBean со следующим содержанием: package com.spring.controller; public...

Request method 'POST' not supported
Всем доброе утро! помогите пож. кто может. Суть у меня есть контроллер ContractsController.class ...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
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 —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru