4

私はDjangoにかなり慣れていないので、djangoを利用したWebサイトにログインしているユーザーが米国外からであるかどうかを確認する方法を知りたいですか?

同じことをチェックするためにミドルウェアでクラスを作成するにはどうすればよいですか?米国からログアウトするユーザーからWebサイトの特定のセクションを非表示にしたい。

私は詳細を提供していないことを知っており、質問は曖昧に見えるかもしれません...しかし、始めるには一般的なアイデアが必要でした。私はまだウェブサイトで働き始めていません。

Djangoミドルウェアのドキュメントを確認しましたが、その方法がわかりませんでした。ユーザー認証https://docs.djangoproject.com/en/1.4/topics/auth/#limiting-access-to-logged-in-usersはそのような機能を提供しますか?

4

1 に答える 1

3

djangoに含まれているGeoIPモジュールを使用できます。

単純なミドルウェアは次のようになります。

class GeoLocationMiddleware:
    def process_request(self, request):
        if 'geoip_check' not in request.session:
            g = GeoIP()
            country = g.country(request.META.get('REMOTE_ADDR'))
            do_something(country) #Do something with country result.
            request.session['geoip_check'] = True #Could store country result

        return None

セッションにフラグを追加していることに気付くでしょう。リクエストごとにGeoIPをチェックする必要はなく、パフォーマンスに悪影響を与えるため、セッションごとに1回だけチェックします。これがあなたが探していたものであることを願っています。

編集:ログインしているユーザーに対してのみこれを実行する場合は、これをそこにスローします。

if request.user.is_authenticated():

最初に。

于 2012-12-10T21:28:32.343 に答える