apache shiro是否根据IP地址和国家限制用户?

时间:2013-10-25 11:48:50

标签: shiro

我想知道apache shiro是否提供此类服务以根据用户IP地址和用户所在国家/地区进行身份验证?


是的,@ Wouter感谢您的信息,但我之前也曾试图覆盖此方法,但我读了http://www.mkyong.com/java/how-to-get-client-ip-address-in-java/文章以避免代理IP地址。

Shiro API gethost()方法doc说

"Returns the host name of the client from where the authentication attempt originates or if the Shiro environment cannot or chooses not to resolve the hostname to improve performance, this method returns the String representation of the client's IP address.
When used in web environments, this value is usually the same as the ServletRequest.getRemoteHost() value."

那么有没有办法检查客户端是否在领域doGetAuthenticationInfo()方法中的代理服务器旁边

//is client behind something?
   String ipAddress = request.getHeader("X-FORWARDED-FOR");  
   if (ipAddress == null) {  
       ipAddress = request.getRemoteAddr();  
   }

......或者这个getHost()方法会为我做什么工作?

1 个答案:

答案 0 :(得分:1)

您可以创建自己的AuthenticatingFilter版本(扩展它)并检查IP地址。如果您使用标准用户名/密码身份验证,您将获得一个UsernamePasswordToken实例,其中包含主机(IP地址)。您可以使用它来创建自己的自定义身份验证逻辑。

对于国家/地区,您可以使用以下国家/地区查询服务扩展上述方法:http://freegeoip.net/