-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit caebc87
Showing
15 changed files
with
481 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
/target/ | ||
!.mvn/wrapper/maven-wrapper.jar | ||
|
||
### STS ### | ||
.apt_generated | ||
.classpath | ||
.factorypath | ||
.project | ||
.settings | ||
.springBeans | ||
.sts4-cache | ||
|
||
### IntelliJ IDEA ### | ||
.idea | ||
*.iws | ||
*.iml | ||
*.ipr | ||
|
||
### NetBeans ### | ||
/nbproject/private/ | ||
/build/ | ||
/nbbuild/ | ||
/dist/ | ||
/nbdist/ | ||
/.nb-gradle/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||
<modelVersion>4.0.0</modelVersion> | ||
|
||
<groupId>com</groupId> | ||
<artifactId>pan</artifactId> | ||
<version>0.0.1-SNAPSHOT</version> | ||
<packaging>jar</packaging> | ||
|
||
<name>pan</name> | ||
<description>Spring project for Spring Boot</description> | ||
|
||
<parent> | ||
<groupId>org.springframework.boot</groupId> | ||
<artifactId>spring-boot-starter-parent</artifactId> | ||
<version>2.0.2.RELEASE</version> | ||
<relativePath/> | ||
</parent> | ||
|
||
<properties> | ||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | ||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> | ||
<java.version>1.8</java.version> | ||
</properties> | ||
|
||
<dependencies> | ||
<dependency> | ||
<groupId>org.springframework.boot</groupId> | ||
<artifactId>spring-boot-starter-data-jpa</artifactId> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.springframework.boot</groupId> | ||
<artifactId>spring-boot-starter-security</artifactId> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.springframework.boot</groupId> | ||
<artifactId>spring-boot-starter-thymeleaf</artifactId> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.springframework.boot</groupId> | ||
<artifactId>spring-boot-starter-web</artifactId> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.springframework.boot</groupId> | ||
<artifactId>spring-boot-starter-test</artifactId> | ||
<scope>test</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.springframework.security</groupId> | ||
<artifactId>spring-security-test</artifactId> | ||
<scope>test</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>mysql</groupId> | ||
<artifactId>mysql-connector-java</artifactId> | ||
<scope>runtime</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.projectlombok</groupId> | ||
<artifactId>lombok</artifactId> | ||
<optional>true</optional> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.json</groupId> | ||
<artifactId>json</artifactId> | ||
<version>20160810</version> | ||
</dependency> | ||
</dependencies> | ||
|
||
<build> | ||
<finalName>ThreePoint</finalName> | ||
<plugins> | ||
<plugin> | ||
<groupId>org.springframework.boot</groupId> | ||
<artifactId>spring-boot-maven-plugin</artifactId> | ||
</plugin> | ||
</plugins> | ||
</build> | ||
|
||
|
||
</project> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
package com.pan; | ||
|
||
import org.springframework.boot.SpringApplication; | ||
import org.springframework.boot.autoconfigure.SpringBootApplication; | ||
|
||
@SpringBootApplication | ||
public class PanApplication { | ||
|
||
public static void main(String[] args) { | ||
SpringApplication.run(PanApplication.class, args); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
package com.pan.controller; | ||
|
||
import com.pan.entity.User; | ||
import com.pan.repository.UserRepository; | ||
import org.springframework.beans.factory.annotation.Autowired; | ||
import org.springframework.security.crypto.password.PasswordEncoder; | ||
import org.springframework.stereotype.Controller; | ||
import org.springframework.web.bind.annotation.PostMapping; | ||
import org.springframework.web.bind.annotation.RequestMapping; | ||
import org.springframework.web.bind.annotation.ResponseBody; | ||
|
||
import javax.servlet.http.HttpServletRequest; | ||
|
||
/** | ||
* Created by FantasticPan on 2018/6/4. | ||
*/ | ||
@Controller | ||
public class IndexController { | ||
|
||
@Autowired | ||
private UserRepository userRepository; | ||
@Autowired | ||
private PasswordEncoder passwordEncoder; | ||
|
||
@ResponseBody | ||
@RequestMapping("/personal_center") | ||
public void login(HttpServletRequest request) { | ||
System.out.println("登录成功"); | ||
} | ||
|
||
@ResponseBody | ||
@PostMapping("/registry") | ||
public void registry(User user) { | ||
System.out.println("注册成功"); | ||
userRepository.save(new User(user.getUsername(), passwordEncoder.encode(user.getPassword()))); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
package com.pan.entity; | ||
|
||
import lombok.Data; | ||
|
||
import javax.persistence.*; | ||
|
||
/** | ||
* 角色类 | ||
* | ||
* Created by FantasticPan on 2018/6/4. | ||
*/ | ||
@Entity | ||
@Table | ||
@Data | ||
public class Role { | ||
|
||
@Id | ||
@GeneratedValue(strategy = GenerationType.IDENTITY) | ||
private Integer id; | ||
private String name; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
package com.pan.entity; | ||
|
||
import lombok.Data; | ||
|
||
import javax.persistence.*; | ||
import java.util.List; | ||
|
||
/** | ||
* Created by FantasticPan on 2018/6/4. | ||
*/ | ||
@Entity | ||
@Table | ||
@Data | ||
public class User { | ||
|
||
@Id | ||
@GeneratedValue(strategy = GenerationType.IDENTITY) | ||
private Integer id; | ||
private String username; | ||
private String password; | ||
@ManyToMany(cascade = {CascadeType.REFRESH},fetch = FetchType.EAGER) | ||
private List<Role> roles; | ||
|
||
public User() { | ||
} | ||
|
||
public User(String username, String password) { | ||
this.username = username; | ||
this.password = password; | ||
} | ||
} | ||
|
||
//@Entity | ||
//@Table | ||
//@Data | ||
//public class User implements UserDetails { | ||
// | ||
// private static final long serialVersionUID = 2881402018559890776L; | ||
// | ||
// @Id | ||
// @GeneratedValue(strategy = GenerationType.IDENTITY) | ||
// private Integer id; | ||
// private String username; | ||
// private String password; | ||
// @ManyToMany(cascade = {CascadeType.REFRESH}, fetch = FetchType.EAGER) | ||
// private List<Role> roles; | ||
// | ||
// public User() { | ||
// } | ||
// | ||
// public User(String username, String password) { | ||
// this.username = username; | ||
// this.password = password; | ||
// } | ||
// | ||
// @Override | ||
// public Collection<? extends GrantedAuthority> getAuthorities() { | ||
// List<GrantedAuthority> auths = new ArrayList<>(); | ||
// List<Role> roles = this.getRoles(); | ||
// for (Role role : roles) { | ||
// auths.add(new SimpleGrantedAuthority(role.getName())); | ||
// } | ||
// return auths; | ||
// } | ||
// | ||
// @Override | ||
// public boolean isAccountNonExpired() { | ||
// return true; | ||
// } | ||
// | ||
// @Override | ||
// public boolean isAccountNonLocked() { | ||
// return true; | ||
// } | ||
// | ||
// @Override | ||
// public boolean isCredentialsNonExpired() { | ||
// return true; | ||
// } | ||
// | ||
// @Override | ||
// public boolean isEnabled() { | ||
// return true; | ||
// } | ||
//} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
package com.pan.repository; | ||
|
||
import com.pan.entity.User; | ||
import org.springframework.data.jpa.repository.JpaRepository; | ||
|
||
/** | ||
* Created by FantasticPan on 2018/6/4. | ||
*/ | ||
public interface UserRepository extends JpaRepository<User, Long> { | ||
|
||
User findByUsername(String username); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
package com.pan.security.config; | ||
|
||
import org.springframework.context.annotation.Configuration; | ||
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; | ||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; | ||
|
||
/** | ||
* 视图控制类,减少Controller书写 | ||
* | ||
* Created by FantasticPan on 2018/6/4. | ||
*/ | ||
@Configuration | ||
public class WebMvcConfig implements WebMvcConfigurer { | ||
|
||
@Override | ||
public void addViewControllers(ViewControllerRegistry registry) { | ||
registry.addViewController("/sign_in").setViewName("login"); | ||
registry.addViewController("/sign_up").setViewName("registry"); | ||
} | ||
} |
78 changes: 78 additions & 0 deletions
78
src/main/java/com/pan/security/config/WebSecurityConfig.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
package com.pan.security.config; | ||
|
||
import com.pan.service.impl.UserDetailsServiceImpl; | ||
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.method.configuration.EnableGlobalMethodSecurity; | ||
import org.springframework.security.config.annotation.web.builders.HttpSecurity; | ||
import org.springframework.security.config.annotation.web.builders.WebSecurity; | ||
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; | ||
|
||
/** | ||
* Security配置类 | ||
* <p> | ||
* Created by FantasticPan on 2018/6/3. | ||
*/ | ||
@Configuration | ||
@EnableWebSecurity | ||
@EnableGlobalMethodSecurity(prePostEnabled = true) | ||
public class WebSecurityConfig extends WebSecurityConfigurerAdapter { | ||
|
||
/** | ||
* 生成定义一个PasswordEncoder的Bean,配置加密方式,这里生成BCryptPasswordEncoder的Bean对象 | ||
*/ | ||
@Bean | ||
public PasswordEncoder passwordEncoder() { | ||
return new BCryptPasswordEncoder(); | ||
} | ||
|
||
/** | ||
* 生成一个自定义的UserDetailsServiceImpl的Bean,交给Spring IOC容器 | ||
*/ | ||
@Bean | ||
UserDetailsService detailsService() { | ||
return new UserDetailsServiceImpl(); | ||
} | ||
|
||
@Override | ||
protected void configure(AuthenticationManagerBuilder auth) throws Exception { | ||
auth.userDetailsService(detailsService()) // 用户认证 | ||
.passwordEncoder(passwordEncoder()); // 使用加密验证 | ||
} | ||
|
||
//@Bean | ||
//public DaoAuthenticationProvider authenticationProvider() { | ||
// DaoAuthenticationProvider authenticationProvider = new DaoAuthenticationProvider(); | ||
// authenticationProvider.setUserDetailsService(detailsService()); | ||
// authenticationProvider.setPasswordEncoder(passwordEncoder()); | ||
// return authenticationProvider; | ||
//} | ||
|
||
@Override | ||
public void configure(WebSecurity web) { | ||
web.ignoring().antMatchers("/config/**", "/css/**", "/fonts/**", "/img/**", "/js/**"); | ||
} | ||
|
||
/** | ||
* Security主要配置 | ||
*/ | ||
@Override | ||
protected void configure(HttpSecurity http) throws Exception { | ||
http | ||
.headers().frameOptions().disable() | ||
.and().authorizeRequests() | ||
.antMatchers("/registry").permitAll() // 注册请求不需要验证 | ||
.antMatchers("/sign_up").permitAll() | ||
.anyRequest().authenticated() | ||
.and().formLogin().loginPage("/sign_in") | ||
.loginProcessingUrl("/login").defaultSuccessUrl("/personal_center",true) | ||
.failureUrl("/sign_in?error").permitAll() | ||
.and().logout().logoutSuccessUrl("/sign_in").permitAll() | ||
.and().csrf().disable(); | ||
} | ||
} |
Oops, something went wrong.