2

apache shiroユーザーの IP アドレスとユーザーの国に基づいて認証を行うサービスを提供しているかどうかを知りたいですか?


はい、@Wouter 情報に感謝しますが、以前にもこのメソッドをオーバーライドしようとしましたが、http://www.mkyong.com/java/how-to-get-client-ip-address-in-Java/を読みました プロキシの IP アドレスを避けるための記事。

Shiro API gethost()メソッドのドキュメントによると

"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()方法は私のために仕事をしますか?

4

1 に答える 1

1

独自のバージョンの AuthenticatingFilter を作成 (拡張) し、IP アドレスを確認できます。標準のユーザー名/パスワード認証を使用すると、ホスト (IP アドレス) を含む UsernamePasswordToken のインスタンスが取得されます。これを使用して、独自のカスタム認証ロジックを作成できます。

国に関しては、次のような国検索サービスを使用して上記のメソッドを拡張できます: http://freegeoip.net/

于 2013-10-27T17:12:23.437 に答える