spring之使用 Spring Security 在登录时记录用户代理信息
txw1958
阅读:19
2024-11-01 17:39:52
评论:0
我正在将 Spring Security 与 LDAP 用于应用程序,我想在用户登录时记录用户代理。但是,我无法访问 Authorities Populator 中的请求对象,因此我无法访问用户代理信息那里。
我还尝试在我们的记录器 (log4j) 中设置模式,以便它通过放入 %X{user-agent} 来记录用户代理,但这也不起作用。
我想做的就是在用户登录时记录用户代理信息。因此,如果 Spring 的安全框架中有一个方法,我可以重写该方法,该方法将能够访问对登录对象的请求,这将是理想的。
或
如果我可以让 log4j 记录用户代理,只要有一个日志条目,那也很好。
请您参考如下方法:
扩展AuthenticationDetailsSourceImpl:
import javax.servlet.http.HttpServletRequest;
import org.acegisecurity.ui.AuthenticationDetailsSourceImpl;
public class UserAgentAuthenticationDetailsSourceImpl extends
AuthenticationDetailsSourceImpl {
public Object buildDetails(HttpServletRequest request) {
String userAgent = request.getHeader("User-Agent");
return super.buildDetails(request);
}
}
在认证过滤器中设置:
<bean id="authenticationProcessingFilter"
class="org.acegisecurity.ui.webapp.AuthenticationProcessingFilter">
...
<property name="authenticationDetailsSource">
<bean class="UserAgentAuthenticationDetailsSourceImpl"/>
</property>
</bean>
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。