wiki:Security

Version 1 (modified by 222004, 2 days ago) ( diff )

--

Spring Security

Извадок од нашиот security config:

@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
    http
        .csrf(AbstractHttpConfigurer::disable)
        .authorizeHttpRequests(reg -> reg
            .requestMatchers("/", "/login", "/register", "/error",
                             "/css/**", "/js/**", "/uploads/**", "/logo.png", "catalog").permitAll()
            .requestMatchers("/admin/branded-medicines/**").hasAnyRole("ADMIN","PHARMACIST")
            .requestMatchers("/admin/**").hasRole("ADMIN")
            .requestMatchers("/pharmacist/**").hasRole("PHARMACIST")
            .anyRequest().permitAll()
        )
        .formLogin(login -> login
            .loginPage("/login")
            .defaultSuccessUrl("/profile", true)
            .permitAll()
        )
        .logout(logout -> logout
            .logoutUrl("/logout")
            .logoutSuccessUrl("/login?logout")
            .permitAll()
        )
        .sessionManagement(sm -> sm.sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED));

    return http.build();
}


Админ рутите (/admin/*) се достапни само за корисници кои се ADMIN, делот за фармацевти (/pharmacist/*) само за PHARMACIST, а клиентски функционалности се ограничуваат по потреба за CLIENT.
Останатите јавни рути се permitAll, а чувствителните се заштитени со hasRole/hasAnyRole (на пр. /admin/branded-medicines/* за ADMIN или PHARMACIST). Автентикацијата е остварена преку custom login форма и redirect на /profile при успешна автентикација.

Note: See TracWiki for help on using the wiki.