Controller tylko dla zalogowanych - Java, Spring MVC

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?

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 :)

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?

1

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.