我使用Spring登录系统使用以下2个查询:
1)
users-by-username-query="select email,password,abilitato from
utente_autenticazione where email=?"
2)
authorities-by-username-query="select u1.email, u2.ruolo from
utente_autenticazione u1, utente_autorizzazione u2 where
u1.id_utente = u2.id_utente and u1.email =?
有没有办法处理课堂内的结果?我想在用户登录后能够知道电子邮件,密码等。
答案 0 :(得分:0)
您可以为此创建自定义过滤器,如下所示:
1)Spring-security.xml
<authentication-manager alias="authenticationManager">
<authentication-provider user-service-ref="customUserDetailsService" >
<password-encoder hash="bcrypt"/>
</authentication-provider>
</authentication-manager>
<beans:bean id="loginUrlAuthenticationEntryPoint" class="org.springframework.security.web.authentication.LoginUrlAuthenticationEntryPoint">
<beans:property name="loginFormUrl" value="/login"/>
</beans:bean>
<beans:bean id="successHandler" class="com.demo.service.impl.LoginSuccessHandler" >
<beans:property name="defaultSuccessUrl" value="user"/>
</beans:bean>
<beans:bean id="failureHandler" class="com.demo.service.impl.LoginFailureHandler">
<beans:property name="defaultFailureUrl" value="failure"/>
</beans:bean>
<http auto-config="false" entry-point-ref="loginUrlAuthenticationEntryPoint">
<custom-filter position="FORM_LOGIN_FILTER" ref="authenticationFilter" />
<access-denied-handler error-page="/denied"/>
<logout invalidate-session="true"
logout-success-url="/logout/success"
logout-url="/logout"/>
<logout logout-success-url="/login?error"/>
</http>
<beans:bean id="authenticationFilter" class="org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter">
<beans:property name="authenticationManager" ref="authenticationManager"/>
<beans:property name="filterProcessesUrl" value="/j_spring_security_check"/>
<beans:property name="authenticationFailureHandler" ref="failureHandler"/>
<beans:property name="authenticationSuccessHandler" ref="successHandler"/>
</beans:bean>
成功登录后,您可以从LoginSuccessHandler访问用户名,密码。
2)LoginSuccessHandler
public class LoginSuccessHandler implements AuthenticationSuccessHandler{
private String defaultSuccessUrl;
@Override
public void onAuthenticationSuccess(HttpServletRequest request,
HttpServletResponse response, Authentication auth) throws IOException,
ServletException {
String username = auth.getName();
System.out.println("username>>"+username);
response.sendRedirect(defaultSuccessUrl);
}
}
同样,您也可以调用LoginFailureHandler来做一些工作,比如阻止用户登录的残疾人数量。
希望得到这个帮助。