luchob/softuni-sep-2023

Въпрос за Spring Security

Closed this issue · 5 comments

Здравей, Лъчо!

Започнах да се занимавам с модула преди официалния старт на това издание и гледам стари издания.
В момента съм на лекциите за Spring Security и гледам и правя демото , което ти показваш на тази лекция.
При билдването не промених версията на сприн-стартер-а и я оставих по дефолт на 3.1.4
Сега при конфигурирането на SecurityFilterChain-a се оказва, че има доста depricated неща като antMatcher-ите,
and(), formLogin() . Успях да сетна само първата част на httpSecurity до and() и не мога да намеря как да процедирам с formLogin и т.н. , съответно се принудих да променя pom-a и да сваля версията на спринг-а
Та питанката ми е може ли в това издание да покажеш сетването на SecurityFilterChain как би могло да стане за Spring security 6 , а ако имаш време тук да дадеш обяснение или ресурси, ще съм още по-благодарен!

Поздрави!
spring security

thrako commented

Здравей Радо,

Вероятно гледаш по-стари издания, т.к. на последното (в нач. на тази година) ползвахме Spring Security 6, Лъчо не е показвал .antMatchers(). Може да разгледаш секюрити конфигурацията на моя проект: https://github.com/thrako/receptaria/blob/main/src/main/java/dev/thrako/receptaria/config/SecurityConfiguration.java, предполагам ще се ориентираш, но ако възникнат допълнителни въпроси, питай пак :)
Поздрави,
Траян

@thrako Благодаря ти!

Изглежда, че всъщност ъпдейта е от 6.1 нататък и в момента и варианта на сетъп от твоя линк също не ми позволява да го изпълня.
Пробвах малко наивно на сляпо вместо and() да си започвом наново чейн и първоначално не ми се караше иде-то, но при стартиране на приложението гръмна.
За сега ще остана с решението със свалянето на версията на секюрити депендънсито и на starter-parent и ще прегледам след време дали в настоящото издание Лъчо го е направил с някоя от версиите след 6.1 :)

ss2

luchob commented

Здрасти, Радо!

Наистина API-то е променено, но добрата новина е че всичко си е почти по старому :-) Този пример върши ли работа?

 http
        .authorizeHttpRequests(
            authorizeHttpRequests -> 
                authorizeHttpRequests.
                    requestMatchers(PathRequest.toStaticResources().atCommonLocations()).permitAll().
                    requestMatchers("/", "/users/login", "/users/register", "/users/login-error").permitAll().
                    requestMatchers("/pages/moderators").hasRole(UserRoleEnum.MODERATOR.name()).
                    requestMatchers("/pages/admins").hasRole(UserRoleEnum.ADMIN.name()).
                    anyRequest().authenticated()
        )
        .formLogin(
            (formLogin) -> 
                formLogin.
                    loginPage("/users/login").
                    usernameParameter(UsernamePasswordAuthenticationFilter.SPRING_SECURITY_FORM_USERNAME_KEY).
                    passwordParameter(UsernamePasswordAuthenticationFilter.SPRING_SECURITY_FORM_PASSWORD_KEY).
                    defaultSuccessUrl("/").
                    failureForwardUrl("/users/login-error")
        )
        .logout((logout) ->
            logout.logoutUrl("/users/logout").
                logoutSuccessUrl("/").//go to homepage after logout
                invalidateHttpSession(true)
        );
luchob commented

Привет отново, мисля че набързо скалъпих едно проектче, което нямах време да изтествам много много :-)

Но все пак ето го -> https://github.com/luchob/security3

Разгледай отново и ако има нещо, насреща съм. Отваряй пак бъга.

Поздрави,
Л.

Здрасти, Лъчо!
Благодаря за включването!

Докато пиша и видях второто ти съобщение:)
Всичко върви ок при твоето проектче.

Успях да разбера и къде съм оплел нещата докато го сравнявам с моя проект. От много човъркане по пом-а е станала белята :)

Отново благодарности и лека вечер!