Kimlik doğrulama sürecini işlemek için bir özel filtre UsernamePasswordAuthenticationFilter oluşturuyorum. Temel olarak, Kullanıcı REST/login aracılığıyla oturum açma http gönderimini gerçekleştirdiğinde, özel filtre yürütülür ve kullanıcı ayrıntılarını ve oluşturulan belirteci içeren bir json biçimine yanıt vermelidir.Özel bir filtreyi yürüttükten sonra json yanıtını programlı olarak nasıl döndürür UsernamePasswordAuthenticationFilter?
Sorunum, istemciye bir json yanıtı vermeyi ayarlıyorum? SavedRequestAwareAuthenticationSuccessHandler'ın bir alt sınıfını oluşturmayı ve burada json yanıtını ayarlamayı düşünüyorum. Bu iyi bir fikir mi? NoRedirectStrategy
public class MyAuthenticationSuccessHandler extends SimpleUrlAuthenticationSuccessHandler {
public MyAuthenticationSuccessHandler() {
super();
setRedirectStrategy(new NoRedirectStrategy());
}
@Override
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response,
Authentication authentication) throws IOException, ServletException {
super.onAuthenticationSuccess(request, response, authentication);
response.write("my JSON response");
}
protected class NoRedirectStrategy implements RedirectStrategy {
@Override
public void sendRedirect(HttpServletRequest request,
HttpServletResponse response, String url) throws IOException {
// no redirect
}
}
}
Not:
Herhangi bir yardım çok) =
Teşekkür
Kendi SuccessHandler uygulamak ve UsernamePasswordAuthenticationFilter enjekte gerekir
özel bir filtre uygulayan yerine sadece ihtiyacınız json üreten bir servlet'dir iletmek için bahar güvenlik yapılandırması kullanan bir nedeni var mı? – ElderMael
@mael: Nedeni, varsayılan j_username/j_password giriş parametreleri adlarını geçersiz kılmaktır. Bu yüzden onu kullanıcı adı/şifre olarak değiştirdim. – Warner
Sadece sizin için kendi filtrelerinizi uygulamanıza gerek yok: [_Veri varsayılan parametre isimleri SPRING_SECURITY_FORM_USERNAME_KEY ve SPRING_SECURITY_FORM_PASSWORD_KEY statik alanlarında bulunur. ** Parametre isimleri usernameParameter ve passwordParameter özelliklerini ayarlayarak da değiştirilebilir. ** ._] (http://static.springsource.org/spring-security/site/docs/3.1.x/apidocs/org/springframework/ güvenlik/web/kimlik doğrulama/UsernamePasswordAuthenticationFilter.html) – Xaerxess