spring之使用 Spring Security 在登录时记录用户代理信息

txw1958 阅读:19 2024-11-01 17:39:52 评论:0

我正在将 Spring Security 与 LDAP 用于应用程序,我想在用户登录时记录用户代理。但是,我无法访问 Authorities Populator 中的请求对象,因此我无法访问用户代理信息那里。

我还尝试在我们的记录器 (log4j) 中设置模式,以便它通过放入 %X{user-agent} 来记录用户代理,但这也不起作用。

我想做的就是在用户登录时记录用户代理信息。因此,如果 Spring 的安全框架中有一个方法,我可以重写该方法,该方法将能够访问对登录对象的请求,这将是理想的。

如果我可以让 log4j 记录用户代理,只要有一个日志条目,那也很好。

请您参考如下方法:

扩展AuthenticationDetailsS​​ourceImpl:

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> 


标签:Spring
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号