From 771c27021c033f5b6b9a3d9fdcd4048f9d8023af Mon Sep 17 00:00:00 2001 From: Alexander Alexeev Date: Mon, 21 Nov 2016 13:38:27 +0700 Subject: spring-www project skeleton --- .../juick/www/configuration/WebSecurityConfig.java | 85 ++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 juick-spring-www/src/main/java/com/juick/www/configuration/WebSecurityConfig.java (limited to 'juick-spring-www/src/main/java/com/juick/www/configuration/WebSecurityConfig.java') diff --git a/juick-spring-www/src/main/java/com/juick/www/configuration/WebSecurityConfig.java b/juick-spring-www/src/main/java/com/juick/www/configuration/WebSecurityConfig.java new file mode 100644 index 00000000..65d07dba --- /dev/null +++ b/juick-spring-www/src/main/java/com/juick/www/configuration/WebSecurityConfig.java @@ -0,0 +1,85 @@ +package com.juick.www.configuration; + +import com.juick.service.UserService; +import com.juick.www.entity.JuickUser; +import org.apache.commons.lang3.StringUtils; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.PropertySource; +import org.springframework.core.env.Environment; +import org.springframework.security.authentication.AuthenticationManager; +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.core.userdetails.UsernameNotFoundException; + +import javax.annotation.Resource; + +/** + * Created by aalexeev on 11/21/16. + */ +@EnableWebSecurity +@PropertySource("classpath:juick.conf") +public class WebSecurityConfig extends WebSecurityConfigurerAdapter { + @Resource + private Environment env; + @Resource + private UserService userService; + + protected WebSecurityConfig() { + super(true); + } + + @Bean("authManager") + @Override + public AuthenticationManager authenticationManagerBean() throws Exception { + return super.authenticationManagerBean(); + } + + @Bean("userDetailsService") + @Override + public UserDetailsService userDetailsServiceBean() throws Exception { + return username -> { + if (StringUtils.isBlank(username)) + throw new UsernameNotFoundException("Invalid user name " + username); + + com.juick.User user = userService.getUserByName(username); + + if (user != null) + return new JuickUser(user); + + throw new UsernameNotFoundException("The username " + username + " is not found"); + }; + } + + @Override + protected void configure(HttpSecurity http) throws Exception { + http + .authorizeRequests() + .antMatchers("/settings", "/pm/**").authenticated() + .anyRequest().authenticated() + .and() + .anonymous() + .authorities("ROLE_ANONYM") + .and() + .logout() + .invalidateHttpSession(true) + .logoutUrl("/logout") + .logoutSuccessUrl("/") + .and() + .formLogin() + .loginPage("/login") + .permitAll() + .defaultSuccessUrl("/") + .failureForwardUrl("/login") + .and() + .rememberMe() + .tokenValiditySeconds(6 * 30 * 24 * 3600) + .alwaysRemember(true) + .useSecureCookie(true) + .rememberMeCookieName(env.getProperty("auth_cookie_name", "hash")) + .rememberMeCookieDomain(env.getProperty("web_domain", "juick.com")) + .and() + .csrf().disable(); + } +} -- cgit v1.2.3