Java 春季:避免非管理员在夜间/周末登录

Java 春季:避免非管理员在夜间/周末登录,java,spring,spring-boot,Java,Spring,Spring Boot,我们正在使用Spring5开发一个身份验证系统(我不熟悉使用这个框架) 我们使用AuthenticationManagerBuilder,出于安全原因,我必须扩展系统以避免非管理员用户在周末或某些非工作时间登录 我在查阅文档、这个网站和网络,我发现唯一能给我灵感的是@PreAuthorize,但我找不到将其用于我的目的的方法 可以使用任何注释或任何框架提供的某种方式来完成吗 谢谢像往常一样使用@PreAuthorize按角色保护方法。例如,在REST控制器中: @PreAuthorize("ha

我们正在使用Spring5开发一个身份验证系统(我不熟悉使用这个框架)

我们使用AuthenticationManagerBuilder,出于安全原因,我必须扩展系统以避免非管理员用户在周末或某些非工作时间登录

我在查阅文档、这个网站和网络,我发现唯一能给我灵感的是
@PreAuthorize
,但我找不到将其用于我的目的的方法

可以使用任何注释或任何框架提供的某种方式来完成吗


谢谢

像往常一样使用
@PreAuthorize
按角色保护方法。例如,在REST控制器中:

@PreAuthorize("hasAuthority('ORDINARY_USER')")
@GetMapping(value="/mymethod")
public void myMethod() {
...
}
不要忘记主类上的
@EnableGlobalMethodSecurity(preprestenabled=true)

在登录时构建
UserDetails
对象的
UserDetails服务
中,如果在工作时间之外,不要将角色分配给非管理员用户


这也适用于长寿命令牌,例如JWT,因为每次点击服务时,您都可以构建
UserDetails

非常感谢您的回答,很抱歉我仍然无法对其进行投票

最后,我实现了一个
AuthenticationSuccessHandle
类,并在现有的
websecurityConfigureAdapter
扩展类的
private AuthenticationSuccessHandler()
方法中返回它(之前,它使用lambda返回了一个
httpServletResponse
,这是一个非常酷的代码,来自一个mate),它看起来工作正常。 我希望这是有道理的

正如Jun Bach和Andy Brown善意地建议的那样,我现在必须确保安全


非常感谢和欢呼

您的意思是要阻止在一天中的特定时间登录您的系统吗?我记得
@预授权
基于用户角色限制访问特定功能您可能需要编写一个过滤器扩展
用户名密码验证过滤器
以覆盖
尝试验证
met在此处输入您的逻辑,并将此筛选器添加到您的
WebSecurityConfiguration