SpringSecurity实现基于注解的访问控制、Remember Me功能实现

基于注解的访问控制

Spring Security提供了一些访问控制的注解,但默认不用,需要在启动类上添加@EnableGlobalMethodSecurity(xxEnabled=true)注解才能使用

@Secured

@Secured注解专门用来判断是否具有角色,可以写在方法或类上,要求参数要以ROLE_开头

  1. 启动类
@SpringBootApplication
@EnableGlobalMethodSecurity(securedEnabled=true)
public class MyApp{
	public static void main(String[] args){
		SpringApplication.run(MyApp.class,args);
	}
}
  1. 注解使用
@Controller
public class MyController{
	@Secured("ROLE_user")
	@RequestMapping("/main")
	public String toMain(){
		return "redirect:/main.html";
	}
}

@PreAuthorize / @PostAuthorize

@PreAuthorize用来判断访问的方法或类在执行之前的权限,可以写在方法或类上
@PostAuthorize用来判断访问的方法或类在执行之后的权限,可以写在方法或类上
这两个注解的参数和access()参数取值相同,都为权限表达式

  1. 启动类
@SpringBootApplication
@EnableGlobalMethodSecurity(prePostEnabled=true)
public class MyApp{
	public static void main(String[] args){
		SpringApplication.run(MyApp.class,args);
	}
}
  1. 注解使用
@Controller
public class MyController{
	@PreAuthorize("hasRole('user')")	//与access()不同的是,这里可以添加ROLE_  @PreAuthorize("hasRole('ROLE_user')")
	@RequestMapping("/main")
	public String toMain(){
		return "redirect:/main.html";
	}
}

Remember Me功能

Remember Me功能是自动将用户信息存储到数据源,在用户不清理cookie及未过期的情况下,实现免登录访问

实现方式:

  1. 编写配置类
@Configuration
public class RememberMeConfig{
	@AutoWired
	private DataSource dataSource;

	@Bean
	public PersistentTokenRepository getPersistentTokenRepository(){
		JdbcTokenRepositoryImpl jdbcTokenRepositoryImpl=new JdbcTokenRepositoryImpl();
		jdbcTokenReposityoryImpl.setDataSource(dataSource);
		//储存rememberme信息
		jdbcTokenRepository.setCreateTableOnS
	}
}
  1. 修改SecurityConfig配置类
  2. 在页面中添加复选框
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值