Yay güvenliği kullanan bir uygulamam var. Kayıt işlemimde, HASHED parolasıyla yeni bir kullanıcı varlığı devam ediyor, kullanıcıya bir etkinleştirme belirteci içeren bir e-posta gönderiliyor. Bu simgeye tıklandığında kullanıcıyı, kullanıcı tarafından belirteç tarafından görünen, kullanıcıyı etkinleştiren ve uygulamaya yönlendiren bir UserActivationServlet'e yönlendirir. Ben otomatik olarak uygulamaya kullanıcıyı giriş yapmak istiyorum ve burada buYaylı güvenlik ile otomatik giriş
private void authenticateUserAndSetSession(HttpServletRequest request, User u) {
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(
u.getUsername(), u.getPassword()); //PROBLEM: THIS PASSWORD IS HASHED
// generate session if one doesn't exist
request.getSession();
token.setDetails(new WebAuthenticationDetails(request));
Authentication authenticatedUser = authenticationManager.authenticate(token);
SecurityContextHolder.getContext().setAuthentication(authenticatedUser);
request.getSession().setAttribute(HttpSessionSecurityContextRepository.SPRING_SECURITY_CONTEXT_KEY,
SecurityContextHolder.getContext());
}
sorunu yapmak benim servlet'dir bu yöntemi oluşturulduğu zaman Kullanıcı varlık üzerinde şifre alanı karma edildiğini olmasıdır dahil ettik. Bu yüzden düşünebildiğim diğer bir seçenek de ihmal edilen parolayı servelet (isteksiz!) Için bir istek parametresi olarak iletmektir.
Bir şeyi özledim mi, kullanıcının kimliğini doğrulamanın başka bir yolu var mı?
Teşekkür SOA size yardımcı olabilir ben doğru anlamak
, kullanıcı aktivasyon linke tıklandığında ve biz baktık: etmek şöyle sadece yaratman yüzden
authenticationManager
ile Token oluştururken kimlik bilgilerini kullanmaya gerek onu yeniden kimlik doğrulaması Onu çok açık bir şekilde geçerli bir kullanıcı var, yani yok kimlik doğrulamaManager'la yeniden kimlik doğrulaması yapmalı ve böylece Token'i oluştururken kimlik bilgilerini kullanmaya gerek yok, sadece aşağıdaki gibi oluşturun: PreAuthenticatedAuthenticationToken token = new PreAuthenticatedAuthenticationToken ( p, null, p.getAuthorities()); –başka benzer bir soru (ve cevap) burada bulabilirsiniz: http://stackoverflow.com/a/12057327/26510 –
@ClintonBosch Yorum yazabilirsin Cevap olarak kabul et ve onu kabul et – fglez