Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
FantasticPan committed Oct 9, 2018
0 parents commit caebc87
Show file tree
Hide file tree
Showing 15 changed files with 481 additions and 0 deletions.
25 changes: 25 additions & 0 deletions .gitignore
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/
82 changes: 82 additions & 0 deletions pom.xml
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>
12 changes: 12 additions & 0 deletions src/main/java/com/pan/PanApplication.java
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);
}
}
37 changes: 37 additions & 0 deletions src/main/java/com/pan/controller/IndexController.java
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())));
}
}
21 changes: 21 additions & 0 deletions src/main/java/com/pan/entity/Role.java
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;
}
85 changes: 85 additions & 0 deletions src/main/java/com/pan/entity/User.java
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;
// }
//}
12 changes: 12 additions & 0 deletions src/main/java/com/pan/repository/UserRepository.java
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);
}
20 changes: 20 additions & 0 deletions src/main/java/com/pan/security/config/WebMvcConfig.java
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 src/main/java/com/pan/security/config/WebSecurityConfig.java
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();
}
}
Loading

0 comments on commit caebc87

Please sign in to comment.