Controller tylko dla zalogowanych - Java, Spring MVC

Odpowiedz Nowy wątek
2018-06-13 21:19
0

Java, Spring MVC

Mam pewien controller:

@Controller
public class AccountController {
 
    @Autowired
    AccountService accountService;
 
    @GetMapping("/login")
    public String loginView(HttpServletResponse response,
                            @CookieValue(value = "username", required = false) String userCookie,
                            @CookieValue(value = "password", required = false) String passCookie) {
 
        if (AccountService.validateCookies(new Account(userCookie, passCookie))) {
            return "redirect:/";
        } else {
            AccountService.deleteCookies(response);
            return "login";
        }
 
    }
 //other methods
}

TO, czy użytkownik jest zalogowany czy nie sprawdzam pobierając cookies, następnie sprawdzam poprawność danych w cookies i albo jest zaloowany albo nie.
Generalnie ten controller odpowiedzialny jest konto, zatem i za logowanie i za rejestrację - powiedzmy, że takie sprawdzanie jest poprawne.

Ale mam też inną klasę controllera, w której do mapowania, do każdego linku jaki jest tam zadeklarowany użytkownik może wejść tylko, jeśli jest zalogowany.
Mogę w każdej metodzie mapowania sprawdzać w taki sposób cookie itd. ale czy istnieje jakiś szybszy sposób, żeby móc obejść robienia tego w taki sposób?
Może coś z użyciem spring security?

Pozostało 580 znaków

2018-06-13 21:47
1

Sporo rzeczy według mnie robisz tu niewłaściwie. Kilka porad:

1) Masz rację, użyj Spring Security, znacząco ci to pomoże
2) Sprawdzenie cookiesa jest jeszcze sensowne po stronie front-endu - żeby nie wysyłać dodatkowych requestów logowania (ale to czasami tylko)
3) Przesyłanie hasła w plain text (a takim są cookiesy) jest też słabe. Niech już by był jakiś Basic Authentication czy szyfrowanie Base64 i wtedy na backendzie byś odczytał. Jeśli chodzi o same cookiesy to Spring Security przechowuje tam JSESSIONID i zobaczysz że jest to długi ciąg hashów.

Tak więc generalnie Spring Security, tutoriale z http://www.mkyong.com/tutorials/spring-security-tutorials/

EDIT: Patrz oczywiście tylko na te tutoriale z adnotacjami, nie z XMLami :)

edytowany 2x, ostatnio: Pinek, 2018-06-13 21:50
Base64 to raczej nie jest szyfrowanie. :) - tampir 2018-06-13 22:23
To jest kodowanie ;) Nie wiem czy nie są to podobne wyrazy - Pinek 2018-06-13 23:15
Nie są. Szyfrowanie zwykle posiada jakiś klucz, bez którego znajomości nie można odczytać wiadomości. - nie100sowny 2018-06-14 16:03

Pozostało 580 znaków

2018-06-13 22:12
0
Pinek napisał(a):

EDIT: Patrz oczywiście tylko na te tutoriale z adnotacjami, nie z XMLami :)

Swoją drogą czemu? Tzn i tego trochę się uczyłem i tego w pisaniu springa, ale adnotacje są bardziej preferowane?

Pozostało 580 znaków

2018-06-13 22:27

Tak już od dość dawna od XML-a się odchodzi, odkąd wszedł Spring Boot jeszcze mniej są używane

edytowany 1x, ostatnio: Pablitto77, 2018-06-13 22:28

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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