1、pom依赖
<!--spring secruty-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
2、Config类
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
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.crypto.bcrypt.BCryptPasswordEncoder;
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
//添加授权
http.authorizeRequests()
.antMatchers("/user/vip1").hasRole("vip1")
.antMatchers("/user/vip2").hasRole("vip2")
.antMatchers("/user/vip3").hasRole("vip3");
// 没有权限,默认会到登录页面,需要开启登录的页面 /login
http.formLogin();
// 注销,注销成功后跳转到首页
http.logout().logoutSuccessUrl("/");
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
// 认证, 这里用缓存里生成的用户,也可以通过数据库获得用户
auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder())
.withUser("admin").password(new BCryptPasswordEncoder().encode("123456")).roles("vip1","vip2","vip3")
.and()
.withUser("guest").password(new BCryptPasswordEncoder().encode("123456")).roles("vip1");
}
}
3、Controller
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/user")
public class UserVipController {
@RequestMapping("/login")
public String login() {
return "login success";
}
@RequestMapping("/vip1")
public String vip1() {
return "vip1";
}
@RequestMapping("/vip2")
public String vip2() {
return "vip2";
}
@RequestMapping("/vip3")
public String vip3() {
return "vip3";
}
}
网友评论