当用户登录我的 Spring 应用程序时,我需要跟踪 IP 地址。
安全.xml:
<authentication-manager alias="authenticationManager">
<authentication-provider user-service-ref="userService">
<password-encoder ref="passwordEncoder">
<salt-source user-property='username' />
</password-encoder>
</authentication-provider>
豆:
<beans:bean id="passwordEncoder"
class="org.springframework.security.authentication.encoding.ShaPasswordEncoder">
<beans:constructor-arg value="512" />
</beans:bean>
我有一个自定义 userService,其方法 loadUserByUsername() 返回自定义 UserDetails。此方法通过 DAO 从数据库中获取 UserDetails。UserDetails 包含与用户相关的内容,例如用户名、密码、权限、电子邮件地址,以及特定于应用程序的变量。我需要在我的 JSP 页面中访问这些变量。
当用户在我的应用程序中成功通过身份验证时,我想将 IP 地址、时间戳和用户 ID 保存到数据库中(通过调用自定义服务中的方法,该方法调用 DAO 方法)。
我不确定该怎么做:我应该实现自定义身份验证提供程序吗?扩展 DaoAuthenticationProvider?还是 AbstractUserDetailsAuthenticationProvider?或者是其他东西?
更一般的问题:
A. 一旦用户提供了正确的凭据,我可以在哪里添加一个方法来调用?
B. 如何获取用户的 IP 地址?(知道tomcat在反向代理中运行在apache后面)。
我试图查看相关的问题/答案,但这让我更加困惑。如果有人可以提供一个非常简单的分步实现,那就太棒了。谢谢!