Spring Security Login with REST API

0

Cześć,
mam pytanie odnośnie logowania w Spring Security z BasicAuthentication (bez tokenów). Problem mój polega na tym, że o ile autentykacja działa poprzez domyślny formularz Spring Security, tak używając własnego nie potrafię stworzyć poprawnego logowania. Pytanie brzmi: jak powinien wyglądać JSON wysłany z frontu na adres "/login"? Próbowałem:

{
	"username":"user",
	"password":"pass"
}

Niestety po wysłaniu takowego JSON'a zawraca mnie na strone logowania (brak błędu, w postmanie status 200 OK.

0

Ja w swoim projekcie robię to tak:

let body = new HttpParams();
    body = body.set('username', username);
    body = body.set('password', password);
    let isStatusOk = true;
    await this.http.post<any>(this.URL + '/login', body, { withCredentials: true }).toPromise().catch((e: HttpErrorResponse) => {
        isStatusOk = false;
    });

Dodatkowo od strony BE mam jeszcze zdefiniowane:
-CustomAuthenticationFailureHandler
-CustomAuthenticationSuccessHandler
-CustomLogoutSuccessHandler
-RestAuthenticationEntryPoint
tak, żeby zwracały odpowiednie kody i żeby BE nie przekierowywał na stronie logowania. Jednak jest to projekt studencki i nie daję żadnej gwarancji, że rozwiązanie, które stosuję jest w pełni poprawne.

0

Skoro w postmanie status jest OK, to może problem tkwi w przekierowaniu po pomyślnym zalogowaniu po stronie frontu?
Fragmenty kodu javowego/ plikow frontowych więcej by rozjaśniły.

0

JQuery:

var login = $("#login").val();
var password = $("#password").val();


$("#submitButton").on("click", function () {
    $.ajax({
        url: "http://localhost:8080/login",
        type: "POST",
        contentType: "application/json",
        data: {"login": login, "password": password},
        
        
    })
});

i WebSecurityCofnig:

@Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .authorizeRequests()
                .antMatchers( "/","/signin.html","/css/**","/javascript/**","/img/**", "/login/**").permitAll()
                .anyRequest().authenticated()
                .and()
                .formLogin()
                .loginPage("/")
                .loginProcessingUrl("/login")
                .defaultSuccessUrl("/secret", true)
                .permitAll()
                .and()
                .csrf().disable();

    }

Nie bardzo jestem w stanie zrozumieć jak powinno wyglądać ciało JSON'a.

0

Ej, ale ty nie masz Basic access authentication, tylko Form-based authentication. To zupełnie co innego.
Po drugie kroisz różne JSONy w Postmanie i w JQuery. Pewnie to jest powód =P

POSTMAN
{
    "username":"user",
    "password":"pass"
}

JQUERY
{
	"login": login,
	"password": password
}

PS. Postman postmanem, ale zobacz jaką odpowiedz dostajesz na froncie w DevToolsach twojej przeglądarki

1 użytkowników online, w tym zalogowanych: 0, gości: 1