【发布时间】:2014-04-05 22:41:16
【问题描述】:
我正在使用 loadUserByUsername 方法对用户进行身份验证,但是,我还需要针对允许的 IP 地址进行验证。
但是当我尝试的时候
SecurityContextHolder.getContext().getAuthentication();
得到空值。
请指教,我如何在验证用户时访问用户的客户端 IP 地址。
【问题讨论】:
-
身份验证时为什么需要IP地址。为什么不简单地使用表达式来检查 ip 地址是否具有访问权限。
-
@Deinum,允许的ip地址将分配给用户帐户,而不是固定的ip地址,所以我不能使用表达式。
-
为什么不能使用表达式?
UserDetailsService仅用于加载用户。如果这是您的自定义用户,您可以编写一个表达式来查看当前 IP 地址是否在允许的 IP 地址列表中。我仍然不明白为什么你不能使用表达式。然而,第一步是在正确的地方解决它,UserDetailsService不是正确的地方。 -
我使用了网址stackoverflow.com/questions/10147161/…中提到的类似方法并且工作了