Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.company.config;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Qualifier;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
- import org.springframework.security.config.annotation.web.builders.HttpSecurity;
- import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
- import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
- import org.springframework.security.core.userdetails.UserDetailsService;
- import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
- import org.springframework.security.crypto.password.PasswordEncoder;
- @Configuration
- @EnableWebSecurity
- public class AppSecurityConfig extends WebSecurityConfigurerAdapter {
- @Autowired
- @Qualifier("userDetailsService")
- UserDetailsService userDetailsService;
- @Autowired
- public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception{
- auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder());
- }
- @Bean
- public PasswordEncoder passwordEncoder() {
- PasswordEncoder encoder = new BCryptPasswordEncoder();
- return encoder;
- }
- @Override
- protected void configure(HttpSecurity http) throws Exception {
- http.authorizeRequests()
- .antMatchers("**/admin/**").access("hasAnyRole('ROLE_ADMIN','ROLE_SUPERADMIN')")
- .antMatchers("/superadmin/**").access("hasRole('ROLE_SUPERADMIN')")
- .antMatchers("**/user/**").access("hasAnyRole('ROLE_USER','ROLE_ADMIN','ROLE_SUPERADMIN')")
- .antMatchers("/resources/**").permitAll()
- .antMatchers("/messages/**").permitAll()
- .and()
- .formLogin()
- .loginPage("/login")
- .usernameParameter("username")
- .passwordParameter("password")
- .defaultSuccessUrl("/user/home")
- .failureUrl("/403")
- .permitAll()
- .and()
- .exceptionHandling().accessDeniedPage("/403")
- .and()
- .logout().logoutUrl("/logout")
- .and()
- .csrf().disable();
- }
- }
- package com.company.service.impl;
- import java.util.ArrayList;
- import java.util.HashSet;
- import java.util.List;
- import java.util.Set;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.security.core.GrantedAuthority;
- import org.springframework.security.core.authority.SimpleGrantedAuthority;
- import org.springframework.security.core.userdetails.User;
- import org.springframework.security.core.userdetails.UserDetails;
- import org.springframework.security.core.userdetails.UserDetailsService;
- import org.springframework.security.core.userdetails.UsernameNotFoundException;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import com.company.dao.UsuarioDao;
- import com.company.model.UserRole;
- import com.company.model.Usuario;
- @Service("userDetailsService")
- public class MyUserDetailsService implements UserDetailsService{
- @Autowired
- private UsuarioDao usuarioDao;
- @Transactional(readOnly=true)
- public UserDetails loadUserByUsername(String username)
- throws UsernameNotFoundException {
- Usuario usuario = usuarioDao.findByChave(username);
- List<GrantedAuthority> authorities = buildUserAuthority(usuario.getUserRole());
- return buildUserForAuthentication(usuario, authorities);
- }
- private User buildUserForAuthentication(Usuario user,
- List<GrantedAuthority> authorities) {
- User usr= new User(user.getUsername(), user.getPassword(),
- user.isEnabled(), true, true, true, authorities);
- System.out.println(usr.toString());
- /*
- * Prints: org.springframework.security.core.userdetails.User@ae6e27ef:
- * Username: SMITH; Password: [PROTECTED]; Enabled: true;
- * AccountNonExpired: true; credentialsNonExpired: true; AccountNonLocked:
- * true; Not granted any authorities
- */
- return usr;
- }
- private List<GrantedAuthority> buildUserAuthority(Set<UserRole> userRoles){
- Set<GrantedAuthority> setAuths = new HashSet<GrantedAuthority>();
- // Build user's authorities
- for (UserRole userRole : userRoles) {
- setAuths.add(new SimpleGrantedAuthority(userRole.getRole()));
- }
- List<GrantedAuthority> Result = new ArrayList<GrantedAuthority>(setAuths);
- return Result;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement