一、数据库的实现
Spring Security提供了默认数据库模板和自定义数据库两种方式,默认数据库方式就不说了,因为基本没人用到
二、自定义数据库
2.1 不同权限controller建立
建立下相关controller,为不同权限做准备
代码如下,注释已经解释清楚了,就不多说了
@RestController
@RequestMapping("admin/api")
public class AdminController {
/**
* 管理员访问路径
* @return
*/
@GetMapping("hello")
public String hello(){
return "admin,hello";
}
}
@RestController
@RequestMapping("/user/api")
public class UserController {
/**
* 注册用户访问路径
* @return
*/
@GetMapping("hello")
public String hello(){
return "user,hello";
}
}
@RestController
@RequestMapping("/app/api")
public class AppController {
/**
* 游客访问路径
* @return
*/
@GetMapping("hello")
public String hello(){
return "app,hello";
}
}
2.2 不同权限资源授权配置
顺便演示一下内存多用户配置
2.2.1 内存多用户配置
配置访问路径权限和用户组权限
package com.example.configuration;
import org.springframework.context.annotation.Bean;
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.User;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.provisioning.InMemoryUserDetailsManager;
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/admin/api/**").hasRole("ADMIN")
.antMatchers("/user/api/**").