2017-05-29 127 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。 –

相關問題