Şirketim, Spring MVC'yi bir sonraki projelerimizden birinde kullanmamız gerekip gerekmediğini belirlemek için değerlendiriyor. Şimdiye kadar gördüklerimi seviyorum ve şu anda Spring Security modülüne bakıp kullanabileceğimiz / kullanmamız gereken bir şey olup olmadığına karar veriyorum.
Güvenlik gereksinimlerimiz oldukça basit; bir kullanıcının sadece sitenin belirli bölümlerine erişebilmesi için bir kullanıcı adı ve şifre verebilmesi gerekir (hesapları hakkında bilgi almak gibi); sitede anonim bir kullanıcıya erişim verilmesi gereken birkaç sayfa (SSS, Destek vb.) vardır.
Oluşturduğum prototipte, kimliği doğrulanmış bir kullanıcı için Oturumda bir "LoginCredentials" nesnesi (sadece kullanıcı adı ve şifre içeriyor) saklıyorum; bazı denetleyiciler, oturum açmış olan kullanıcı adına bir başvuru almak için bu nesnenin oturumda olup olmadığını kontrol eder. Bunun yerine evde yetiştirilen bu mantığı Spring Security ile değiştirmek istiyorum, bu da "giriş yapan kullanıcıları nasıl izleyebiliriz?" ve "kullanıcıların kimliğini nasıl doğrularız?" denetleyicim / işletme kodumdan.
Görünüşe göre Spring Security, uygulamanızın herhangi bir yerinden kullanıcı adı / ana bilgilere erişebilmek için (iş parçacığı başına) bir "bağlam" nesnesi sağlıyor ...
Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
... bu nesnenin bir bakıma (küresel) bir singleton olduğu gibi çok Baharsız görünüyor.
Benim sorum şudur: Spring Security'de kimliği doğrulanmış kullanıcı hakkındaki bilgilere erişmenin standart yolu bu ise, Birim Testleri, Doğrulanmış kullanıcı?
Bunu her test vakasının başlatma yönteminde kablolamam gerekir mi?
protected void setUp() throws Exception {
...
SecurityContextHolder.getContext().setAuthentication(
new UsernamePasswordAuthenticationToken(testUser.getLogin(), testUser.getPassword()));
...
}
Bu aşırı ayrıntılı görünüyor. Daha kolay bir yol var mı?
SecurityContextHolder
Nesne kendisi çok un-Bahar-gibi görünüyor ...