Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit cf17389

Browse files
author
Rachit Bhasin
committed
Added JWT implementation
1 parent f12178f commit cf17389

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+1012
-235
lines changed

‎.settings/ts.eclipse.ide.core.prefs‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
eclipse.preferences.version=1
2+
typeScriptBuildPath={}

‎pom.xml‎

Lines changed: 28 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,23 @@
2828
</dependencyManagement>
2929

3030
<dependencies>
31+
<dependency>
32+
<groupId>joda-time</groupId>
33+
<artifactId>joda-time</artifactId>
34+
<version>2.9.9</version>
35+
</dependency>
36+
37+
<dependency>
38+
<groupId>io.jsonwebtoken</groupId>
39+
<artifactId>jjwt</artifactId>
40+
<version>0.6.0</version>
41+
</dependency>
42+
43+
<dependency>
44+
<groupId>org.springframework.mobile</groupId>
45+
<artifactId>spring-mobile-device</artifactId>
46+
<version>1.1.5.RELEASE</version>
47+
</dependency>
3148
<!-- Servlet API -->
3249
<dependency>
3350
<groupId>javax.servlet</groupId>
@@ -140,17 +157,17 @@
140157
<yarnVersion>v1.3.2</yarnVersion>
141158
</configuration>
142159
</execution>
143-
160+
144161
<execution>
145-
<id>yarn install</id>
146-
<goals>
147-
<goal>yarn</goal>
148-
</goals>
149-
<configuration>
150-
<arguments>install</arguments>
151-
</configuration>
152-
</execution>
153-
162+
<id>yarn install</id>
163+
<goals>
164+
<goal>yarn</goal>
165+
</goals>
166+
<configuration>
167+
<arguments>install</arguments>
168+
</configuration>
169+
</execution>
170+
154171
<execution>
155172
<id>yarn run clean</id>
156173
<goals>
@@ -160,7 +177,7 @@
160177
<arguments>run clean</arguments>
161178
</configuration>
162179
</execution>
163-
180+
164181
<execution>
165182
<id>yarn run start</id>
166183
<goals>

‎src/main/java/com/rc/uam/config/AppConfig.java‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@
2626

2727
import com.rc.uam.interceptor.SaveOrUpdateInterceptor;
2828

29+
/**
30+
* @author Rachit Bhasin
31+
*
32+
*/
2933
@Configuration
3034
@PropertySource("classpath:db.properties")
3135
@EnableTransactionManagement

‎src/main/java/com/rc/uam/config/UamAppInitializer.java‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
44

5+
/**
6+
* @author Rachit Bhasin
7+
*
8+
*/
59
public class UamAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
610

711
@Override

‎src/main/java/com/rc/uam/config/WebConfig.java‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@
1010
import org.springframework.web.servlet.view.InternalResourceViewResolver;
1111
import org.springframework.web.servlet.view.JstlView;
1212

13+
/**
14+
* @author Rachit Bhasin
15+
*
16+
*/
1317
@Configuration
1418
@EnableWebMvc
1519
@ComponentScan(basePackages = { "com.rc.uam" })
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
package com.rc.uam.config;
2+
3+
import java.util.ArrayList;
4+
import java.util.Arrays;
5+
import java.util.List;
6+
7+
import org.springframework.beans.factory.annotation.Autowired;
8+
import org.springframework.context.annotation.Bean;
9+
import org.springframework.context.annotation.Configuration;
10+
import org.springframework.http.HttpMethod;
11+
import org.springframework.security.authentication.AuthenticationManager;
12+
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
13+
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
14+
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
15+
import org.springframework.security.config.annotation.web.builders.WebSecurity;
16+
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
17+
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
18+
import org.springframework.security.config.http.SessionCreationPolicy;
19+
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
20+
import org.springframework.security.crypto.password.PasswordEncoder;
21+
import org.springframework.security.web.authentication.www.BasicAuthenticationFilter;
22+
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
23+
import org.springframework.security.web.util.matcher.RequestMatcher;
24+
25+
import com.rc.uam.security.RestAuthenticationEntryPoint;
26+
import com.rc.uam.security.TokenAuthenticationFilter;
27+
import com.rc.uam.security.TokenHelper;
28+
import com.rc.uam.service.impl.CustomUserDetailsService;
29+
30+
/**
31+
* @author Rachit Bhasin
32+
*
33+
*/
34+
@Configuration
35+
@EnableWebSecurity
36+
@EnableGlobalMethodSecurity(prePostEnabled = true)
37+
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
38+
39+
@Autowired
40+
private CustomUserDetailsService jwtUserDetailsService;
41+
42+
@Autowired
43+
private RestAuthenticationEntryPoint restAuthenticationEntryPoint;
44+
45+
@Bean
46+
public PasswordEncoder passwordEncoder() {
47+
return new BCryptPasswordEncoder();
48+
}
49+
50+
@Bean
51+
@Override
52+
public AuthenticationManager authenticationManagerBean() throws Exception {
53+
return super.authenticationManagerBean();
54+
}
55+
56+
@Autowired
57+
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
58+
auth.userDetailsService(jwtUserDetailsService).passwordEncoder(passwordEncoder());
59+
}
60+
61+
@Autowired
62+
TokenHelper tokenHelper;
63+
64+
@Override
65+
protected void configure(HttpSecurity http) throws Exception {
66+
List<RequestMatcher> csrfMethods = new ArrayList<>();
67+
Arrays.asList("POST", "PUT", "PATCH", "DELETE")
68+
.forEach(method -> csrfMethods.add(new AntPathRequestMatcher("/**", method)));
69+
http
70+
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and()
71+
.exceptionHandling().authenticationEntryPoint(restAuthenticationEntryPoint).and()
72+
.authorizeRequests()
73+
.antMatchers(
74+
HttpMethod.GET,
75+
"/",
76+
"/*.html",
77+
"/favicon.ico",
78+
"/**/*.html",
79+
"/**/*.css",
80+
"/**/*.js"
81+
).permitAll()
82+
.antMatchers("/auth/**").permitAll()
83+
.anyRequest().authenticated().and()
84+
.addFilterBefore(new TokenAuthenticationFilter(tokenHelper, jwtUserDetailsService), BasicAuthenticationFilter.class);
85+
86+
http.csrf().disable();
87+
}
88+
89+
@Override
90+
public void configure(WebSecurity web) throws Exception {
91+
// TokenAuthenticationFilter will ignore the below paths
92+
web.ignoring().antMatchers(
93+
HttpMethod.POST,
94+
"/auth/login"
95+
);
96+
web.ignoring().antMatchers(
97+
HttpMethod.GET,
98+
"/",
99+
"/*.html",
100+
"/favicon.ico",
101+
"/**/*.html",
102+
"/**/*.css",
103+
"/**/*.js"
104+
);
105+
}
106+
}

‎src/main/java/com/rc/uam/controller/HomeController.java‎

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,23 +6,19 @@
66
import org.springframework.web.bind.annotation.RequestMapping;
77
import org.springframework.web.bind.annotation.RequestMethod;
88

9-
import com.rc.uam.model.User;
10-
import com.rc.uam.utility.CustomUtil;
11-
9+
/**
10+
* @author Rachit Bhasin
11+
*
12+
*/
1213
@Controller
1314
public class HomeController {
1415

15-
private staticfinal Logger logger = Logger.getLogger(HomeController.class);
16+
private final Logger logger = Logger.getLogger(this.getClass());
1617

17-
@RequestMapping(value = { "/*", "/*/*" }, method = RequestMethod.GET)
18+
@RequestMapping(value = { "/app/*", "/app/*/*" }, method = RequestMethod.GET)
1819
public String homePage(ModelMap model) {
19-
logger.info("User is Logged in: " + CustomUtil.isUserLoggedIn());
20-
User user = CustomUtil.getLoggedInUser();
21-
if(user!=null) {
22-
logger.info("Logged in as: " + user.getEmail());
23-
}
20+
logger.info("Loading index page for SPA application");
2421

25-
model.addAttribute("greeting", "Hi, Welcome to mysite");
2622
return "index";
2723
}
2824
}

‎src/main/java/com/rc/uam/dao/AbstractDao.java‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@
99
import org.hibernate.SessionFactory;
1010
import org.springframework.beans.factory.annotation.Autowired;
1111

12+
/**
13+
* @author Rachit Bhasin
14+
*
15+
*/
1216
public abstract class AbstractDao<PK extends Serializable, T> {
1317

1418
private final Class<T> persistentClass;

‎src/main/java/com/rc/uam/dao/BookDao.java‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@
44

55
import com.rc.uam.model.Book;
66

7+
/**
8+
* @author Rachit Bhasin
9+
*
10+
*/
711
public interface BookDao {
812

913
long save(Book book);

‎src/main/java/com/rc/uam/dao/UserDao.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
public interface UserDao {
1414
long save(User user) throws UamException;
1515
User get(Long id) throws UamException;
16-
public User getByField(String field, String value) throws UamException;
16+
public User findByField(String field, String value) throws UamException;
1717
List<User> list() throws UamException;
1818
void update(Long id, User user) throws UamException;
1919
void delete(Long id) throws UamException;

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /