6
我們使用的是Spring Framework和Spring Security 3.0.x,我們如何知道當前訪問者是否已登錄並且他們的用戶名是什麼?我一直有下面的代碼:如何知道當前的Web訪問者是否使用Spring Security 3.0登錄
public static String getUsername() {
Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
if (principal == null)
return null;
if (principal instanceof String)
return (String) principal;
if (principal instanceof User)
return ((User) principal).getUsername();
return null;
}
的原因instanceof
s是過去有時getPrincipal()
將返回String
,有時一個User
......
所以我想簡單地檢查是否getUsername()
返回null
以查看當前訪問者是否已登錄。但是,最近升級某些組件時,我們的Spring庫中發生了一些變化。現在如果用戶未登錄,getPrincipal()
返回String
「anonymousUser」。
展望未來,我應該檢查訪問者是否登錄並且他們的用戶名是什麼的正確方法是什麼?