2017-05-29 51 views
-3

我可以看到这个HTML页面: https://docs.spring.io/spring-security/site/docs/current/apidocs/org/springframework/security/authentication/AccountExpiredException.htmlSpring框架如何检查用户帐户是否过期?

在我的代码,我使用了以下内容:

try { 
providerManager.authenticate(auth); 
} catch(LockedException e) { 
    // some user exception to throw 
} catch(DisabledException e) { 
    // some user exception to throw 
} catch(AccountExpiredException e) { 
    // some user exception to throw 
} 

所以春季如何确定有关用户帐户过期?

我必须做测试,所以我必须过期用户帐户。这就是为什么。

+1

通过调用'用户'上的'isNotExpired'方法。但是,为什么你甚至测试这个并抛出单独的异常呢?感觉就像你正在为Spring Security的异常处理工作一样,并且向用户公开重要的信息(即帐户被锁定,过期等),这对于黑客来说也是有价值的信息。 –

+0

'isNotExpired'是getter方法。但是,如果setter方法将过期变量设置为TRUE,那么在哪种情况下它将其设置为TRUE?我只是想给用户一个特定的理由,因为过期的帐户。没有其他信息可以导致黑客种类。 –

+1

揭露该信息是黑客的信息,他有一个现有的帐户。他可能会在几天后再次尝试......您可能希望在内部记录该信息,但不会将其公开给最终用户。它是如何设置的,取决于你使用的是什么,默认它是'true',只设置'enabled'。 –

回答

0

基本上,弹簧与http://docs.spring.io/spring-security/site/docs/current/apidocs/org/springframework/security/core/userdetails/UserDetails.html的用户一起工作。所以你需要找到代码,将用户实体转换为UserDetails。也许你正在使用像内存或JDBC(请检查你的http://docs.spring.io/spring-security/site/docs/current/apidocs/org/springframework/security/config/annotation/web/configuration/WebSecurityConfigurerAdapter.html)这样的默认机制,在这种情况下,你需要检查这个机制的文档/源代码。

+0

是的,我们有UserDetails类。当我们登录用户时,我们用accountNonExpired = TRUE设置UserDetails构造函数。所以在我们的案例中,它是真实的。是否预计? –

+0

如果您的系统不支持锁定,禁用或过期帐户,那么预计会发生这种情况。用户实体可能没有相应的字段以及数据库表。所以所有用户都不会被锁定/禁用/过期。如果你想添加它,那么你需要添加相应的属性到表中,创建User实体的字段用你的ORM读取它,然后将该值传递给UserDetails。 –

+0

我会说,好的UserDetails被Spring使用,在我的代码中它被设置为TRUE。 –

相关问题