我有一段代码-
@PropertySource(value = "classpath:securityConfig.properties", ignoreResourceNotFound = true)
@Controller
public class IndexController {
private static final String LOGIN_PAGE = "login";
private static final String HOME_PAGE = "home";
private static final String LOBBY_PAGE = "lobby";
private static final String FORGOT_USER_PAGE = "forgotUserName";
private static final String FORGOT_PASSWORD_PAGE = "forgotPassWord";
@ConditionalOnProperty(name = "auth.mode", havingValue = "fixed")
@PreAuthorize("isAnonymous()")
@RequestMapping(method = RequestMethod.GET, value = { "/login" })
public String getIndexPage() {
return LOGIN_PAGE;
}
}
然而,ConditionalOn注解没有按预期工作。如果auth.mode
不是fixed
,我不希望控制器执行。注意-auth.mode
在securityConfig.properties
文件中
我错过了什么吗?可能是类级别的注解?
3条答案
按热度按时间svujldwt1#
应该将
@ConditionalOnProperty
注解移动到类中,而不是方法中。这将意味着整个控制器将不存在于应用程序上下文中,除非满足条件。
wztqucjr2#
编辑
@PreAuthorize
注解以添加条件x4shl7ld3#
@ConditionalOnProperty
可用作@Bean
方法上的方法级别注解only,如(在配置类中):我个人使用的
@Value
注解加载一个属性,然后根据属性值使用一个条件结构(if
)。例如: