希望基于令牌保护基本java spring应用程序中的页面。令牌消耗后,我需要应用程序知道令牌在某个时刻是有效的,然后花一些时间在该会话上。下面是我必须使用令牌的控制器。
background: #fff
对令牌执行一些检查后,如何保护所有后续页面?我也希望能够保护api电话。有人能指出我对弹簧组件的方向吗?
答案 0 :(得分:1)
我认为您应该查看Spring Security而不是滚动自己的解决方案 - 它是为处理身份验证而构建的。
你特别应该注意的是session management,这听起来就像你在这里尝试的那样。
根据用户获取令牌的方式,您可能需要实施自己的身份验证管理器和/或登录流程,但默认情况下也包含很多常见情况。
一旦设置了Spring Security并且会话管理工作,您就可以通过注释控制器方法来保护URL:
1/2 + y
或将它们注册到HTTP安全配置中:
@RequestMapping("/api/protected")
@PreAuthorize("hasRole('ROLE_USER')")
public String myProtectedController(Authentication authentication, Model model) {
// User will be authenticated here
}
当然,在您的情况下,您可能会使用@Configuration
public class SecurityConfig extends WebSecurityConfigurationAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
// Everyone can acess /login
.antMatchers("/login").permitAll()
// Only authorized users can access URLs under /api/
.antMatchers("/api/**").access("hasRole('ROLE_USER')")
}
}
之外的其他内容,因为您可能会或可能不会拥有实际用户,但您可以使用会话中的其他内容。