Skip to content

Commit de6afb5

Browse files
SpringBootSecurityHsSqlDbExample
1 parent 71e7a7e commit de6afb5

33 files changed

+1746
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
.idea
2+
*.iml
3+
target
+133
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xmlns="http://maven.apache.org/POM/4.0.0"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
5+
http://maven.apache.org/xsd/maven-4.0.0.xsd">
6+
<modelVersion>4.0.0</modelVersion>
7+
8+
<groupId>SpringBootSecurityHsSqlDbExample</groupId>
9+
<artifactId>SpringBootSecurityHsSqlDbExample</artifactId>
10+
<version>1.0-SNAPSHOT</version>
11+
<packaging>war</packaging>
12+
13+
<parent>
14+
<groupId>org.springframework.boot</groupId>
15+
<artifactId>spring-boot-starter-parent</artifactId>
16+
<version>1.2.0.RELEASE</version>
17+
</parent>
18+
19+
<name>Spring Boot Security Example</name>
20+
<url>http://spring-boot-security-application/</url>
21+
22+
23+
<organization>
24+
<name>ESpark</name>
25+
<url>http://adarshkumarsingh83.blogspot.in/</url>
26+
</organization>
27+
<licenses>
28+
<license>
29+
<name>ESpark</name>
30+
<url>http://adarshkumarsingh83.blogspot.in/licenses/LICENSE-2.0.txt</url>
31+
<distribution>repo</distribution>
32+
</license>
33+
</licenses>
34+
<developers>
35+
<developer>
36+
<id>adarshkumarsingh83</id>
37+
<name>Adarsh Kumar</name>
38+
<email>adarshkumarsingh83@gmail.com</email>
39+
<roles>
40+
<role>project architect</role>
41+
</roles>
42+
</developer>
43+
</developers>
44+
45+
46+
<repositories>
47+
48+
<repository>
49+
<id>maven2-repository.java.net</id>
50+
<name>Java.net Repository for Maven</name>
51+
<url>http://download.java.net/maven/2/</url>
52+
</repository>
53+
54+
<repository>
55+
<id>JBoss repository</id>
56+
<url>http://repository.jboss.org/nexus/content/groups/public/</url>
57+
</repository>
58+
59+
</repositories>
60+
61+
62+
<properties>
63+
<project.name>SpringBootSecurityHsSqlDbExample</project.name>
64+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
65+
<java.version>1.8</java.version>
66+
</properties>
67+
68+
<dependencies>
69+
70+
<!-- Spring Boot -->
71+
72+
<dependency>
73+
<groupId>org.springframework.boot</groupId>
74+
<artifactId>spring-boot-starter</artifactId>
75+
</dependency>
76+
77+
<dependency>
78+
<groupId>org.springframework.boot</groupId>
79+
<artifactId>spring-boot-starter-test</artifactId>
80+
<scope>test</scope>
81+
<exclusions>
82+
<exclusion>
83+
<groupId>org.springframework</groupId>
84+
<artifactId>spring-test</artifactId>
85+
</exclusion>
86+
</exclusions>
87+
</dependency>
88+
89+
<dependency>
90+
<groupId>org.springframework.boot</groupId>
91+
<artifactId>spring-boot-starter-freemarker</artifactId>
92+
</dependency>
93+
94+
<dependency>
95+
<groupId>org.springframework.boot</groupId>
96+
<artifactId>spring-boot-starter-security</artifactId>
97+
</dependency>
98+
99+
<dependency>
100+
<groupId>org.springframework.boot</groupId>
101+
<artifactId>spring-boot-starter-data-jpa</artifactId>
102+
</dependency>
103+
104+
<!-- HSQLDB -->
105+
106+
<dependency>
107+
<groupId>org.hsqldb</groupId>
108+
<artifactId>hsqldb</artifactId>
109+
</dependency>
110+
111+
</dependencies>
112+
113+
<build>
114+
<finalName>${project.name}</finalName>
115+
<resources>
116+
<resource>
117+
<directory>src/main/resources</directory>
118+
<filtering>true</filtering>
119+
</resource>
120+
</resources>
121+
<plugins>
122+
<plugin>
123+
<artifactId>maven-compiler-plugin</artifactId>
124+
<configuration>
125+
<source>${java.version}</source>
126+
<target>${java.version}</target>
127+
<encoding>${project.build.sourceEncoding}</encoding>
128+
</configuration>
129+
</plugin>
130+
</plugins>
131+
</build>
132+
133+
</project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
/*
2+
* Copyright (c) 2015 Espark And ©Adarsh Development Services @copyright All rights reserved.
3+
*
4+
* Redistribution and use in source and binary forms, with or without
5+
* modification, are permitted provided that the following conditions
6+
* are met:
7+
*
8+
* - Redistributions of source code must retain the above copyright
9+
* notice, this list of conditions and the following disclaimer.
10+
*
11+
* - Redistributions in binary form must reproduce the above copyright
12+
* notice, this list of conditions and the following disclaimer in the
13+
* documentation and/or other materials provided with the distribution.
14+
*
15+
* - Neither the name of Espark nor the names of its
16+
* contributors may be used to endorse or promote products derived
17+
* from this software without specific prior written permission.
18+
*
19+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
20+
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
21+
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22+
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
23+
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
24+
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
25+
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
26+
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
27+
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
28+
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
29+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30+
*/
31+
package com.espark.adarsh;
32+
33+
import org.springframework.boot.SpringApplication;
34+
import org.springframework.boot.autoconfigure.SpringBootApplication;
35+
import org.springframework.boot.builder.SpringApplicationBuilder;
36+
import org.springframework.boot.context.web.SpringBootServletInitializer;
37+
/**
38+
* @author Adarsh Kumar
39+
* @author $LastChangedBy: Adarsh Kumar$
40+
* @version $Revision: 0001 $, $Date:: 1/1/10 0:00 AM#$
41+
* @Espark @copyright all right reserve
42+
*/
43+
@SpringBootApplication
44+
public class BootApplicationMain extends SpringBootServletInitializer {
45+
46+
public static void main(String[] args) {
47+
SpringApplication.run(BootApplicationMain.class, args);
48+
}
49+
50+
@Override
51+
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
52+
return application.sources(BootApplicationMain.class);
53+
}
54+
55+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
/*
2+
* Copyright (c) 2015 Espark And ©Adarsh Development Services @copyright All rights reserved.
3+
*
4+
* Redistribution and use in source and binary forms, with or without
5+
* modification, are permitted provided that the following conditions
6+
* are met:
7+
*
8+
* - Redistributions of source code must retain the above copyright
9+
* notice, this list of conditions and the following disclaimer.
10+
*
11+
* - Redistributions in binary form must reproduce the above copyright
12+
* notice, this list of conditions and the following disclaimer in the
13+
* documentation and/or other materials provided with the distribution.
14+
*
15+
* - Neither the name of Espark nor the names of its
16+
* contributors may be used to endorse or promote products derived
17+
* from this software without specific prior written permission.
18+
*
19+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
20+
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
21+
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22+
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
23+
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
24+
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
25+
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
26+
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
27+
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
28+
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
29+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30+
*/
31+
package com.espark.adarsh.configuration;
32+
33+
import org.springframework.beans.factory.annotation.Autowired;
34+
import org.springframework.boot.autoconfigure.security.SecurityProperties;
35+
import org.springframework.context.annotation.Configuration;
36+
import org.springframework.core.annotation.Order;
37+
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
38+
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
39+
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
40+
import org.springframework.security.config.annotation.web.builders.WebSecurity;
41+
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
42+
import org.springframework.security.core.userdetails.UserDetailsService;
43+
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
44+
45+
/**
46+
* @author Adarsh Kumar
47+
* @author $LastChangedBy: Adarsh Kumar$
48+
* @version $Revision: 0001 $, $Date:: 1/1/10 0:00 AM#$
49+
* @Espark @copyright all right reserve
50+
*/
51+
52+
@Configuration
53+
@EnableGlobalMethodSecurity(prePostEnabled = true)
54+
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
55+
class SpringSecurityConfiguration extends WebSecurityConfigurerAdapter {
56+
57+
@Autowired
58+
private UserDetailsService userDetailsService;
59+
60+
@Override
61+
public void configure(WebSecurity webSecurity) throws Exception {
62+
webSecurity.ignoring().antMatchers("*.js")
63+
.antMatchers("*.css")
64+
.antMatchers("/imaages/**")
65+
.antMatchers("*.ico")
66+
.antMatchers("/home")
67+
.antMatchers("/public/**");
68+
}
69+
70+
@Override
71+
protected void configure(HttpSecurity http) throws Exception {
72+
http.authorizeRequests()
73+
.antMatchers("/users/**").hasAuthority("ADMIN")
74+
.anyRequest().fullyAuthenticated()
75+
.and()
76+
.formLogin()
77+
.loginPage("/login")
78+
.failureUrl("/login?error")
79+
.usernameParameter("email")
80+
.permitAll()
81+
.and()
82+
.logout()
83+
.logoutUrl("/logout")
84+
.deleteCookies("remember-me")
85+
.logoutSuccessUrl("/")
86+
.permitAll()
87+
.and()
88+
.rememberMe();
89+
}
90+
91+
@Override
92+
public void configure(AuthenticationManagerBuilder authenticationManagerBuilder) throws Exception {
93+
authenticationManagerBuilder.userDetailsService(userDetailsService)
94+
.passwordEncoder(new BCryptPasswordEncoder());
95+
}
96+
97+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
/*
2+
* Copyright (c) 2015 Espark And ©Adarsh Development Services @copyright All rights reserved.
3+
*
4+
* Redistribution and use in source and binary forms, with or without
5+
* modification, are permitted provided that the following conditions
6+
* are met:
7+
*
8+
* - Redistributions of source code must retain the above copyright
9+
* notice, this list of conditions and the following disclaimer.
10+
*
11+
* - Redistributions in binary form must reproduce the above copyright
12+
* notice, this list of conditions and the following disclaimer in the
13+
* documentation and/or other materials provided with the distribution.
14+
*
15+
* - Neither the name of Espark nor the names of its
16+
* contributors may be used to endorse or promote products derived
17+
* from this software without specific prior written permission.
18+
*
19+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
20+
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
21+
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22+
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
23+
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
24+
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
25+
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
26+
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
27+
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
28+
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
29+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30+
*/
31+
package com.espark.adarsh.controller;
32+
33+
import com.espark.adarsh.domain.CurrentUser;
34+
import org.slf4j.Logger;
35+
import org.slf4j.LoggerFactory;
36+
import org.springframework.security.core.Authentication;
37+
import org.springframework.web.bind.annotation.ControllerAdvice;
38+
import org.springframework.web.bind.annotation.ModelAttribute;
39+
/**
40+
* @author Adarsh Kumar
41+
* @author $LastChangedBy: Adarsh Kumar$
42+
* @version $Revision: 0001 $, $Date:: 1/1/10 0:00 AM#$
43+
* @Espark @copyright all right reserve
44+
*/
45+
@ControllerAdvice
46+
public class CurrentUserControllerAdvice {
47+
48+
private static final Logger LOGGER = LoggerFactory.getLogger(CurrentUserControllerAdvice.class);
49+
50+
@ModelAttribute("currentUser")
51+
public CurrentUser getCurrentUser(Authentication authentication) {
52+
return (authentication == null) ? null : (CurrentUser) authentication.getPrincipal();
53+
}
54+
55+
56+
}

0 commit comments

Comments
 (0)