2017-03-06 10 views
0

私は私が直面してる憲法に3つのアプリケーション(アプリ、ブログ、フロントエンド) enter image description hereジャンゴ:1つのアプリ内の特定のユーザーへのアクセスをブロック

挑戦を持つDjangoプロジェクトdemonstrationを構築しています以下の通りです:私は唯一の登録ユーザーを許可するアプリappリミットアクセスしたい

。言い換えれば

app Djangoアプリケーション内のすべてのページへのアクセスを制限します。 Link 1で答えが簡単に実装するようだ

  1. Link 1
  2. Link 2
  3. Link 3

:いくつかの研究を行った後

は、以下のリンクaccrossつまずきました。

私はDjangoでミドルウェアを使用している経験がほとんどないため、まだ問題があります。コメントであっ尋ね

「は、ユーザがログインしていない場合、私は、アプリと呼ばれる1つのアプリのアクセスを制限したいです。ミドルウェアRequireLoginMiddlewareクラスは、どこに配置する必要がありますか?

まだこれまでの返信はありませんが、私はこれを横断する方法を見つけられないようです。

私は何をする必要があるか説明することができます登録ユーザーだけを許可するために、djangoアプリケーションのすべてのページへのアクセスを制限しますか??あなたのミドルウェアが住んでいる

答えて

1

であなたのapp意見を飾ることでしょう:views.pyの内部

、からapp appディレクトリ、 は以下を追加しました:

from django.contrib.auth.decorators import login_required 

と、右のビューを呼び出す前に:

@login_required(login_url="/admin/") #location where users are going to be able to do the login 
def profile(request): #view 

これはを意味します。ユーザーがログオンし、ビューにアクセスしようとしていないと、彼/彼女/それはログイン画面

+0

にリダイレクトされます(逆 '使用(URLをハードコードしないでください。 ) '代わりに)。また、それぞれのlogin_urlと 'login_required'の呼び出しを指定する必要はありません。設定に指定されているもの(通常はあなたが望むもの)を使用しない場合は、login_urlを指定する必要はありません。 –

+0

'reverse'と' reverse_lazy'を実装しようとしました。 あなたはまだそれをやっていないとtbh私はあなたがより良く説明しない限り、それの重要性を見ていないよ。 反対側については、目的に応じて、どのようにしてそれを行うことができるかを示しています – brotherperes

1

はあなた次第です、唯一の問題は、それがあなたのsys.pathであるということです。

Best way to make Django's login_required the defaultのミドルウェアは、ハードコードされたURL(少なくとも、settingsにハードコードされています)に依存していることに注意してください。これはDRY違反です。これはあなたのappアプリのURLごとにreverse_lazyを使用することによって解決することができますが、この時点で、あなたは速いだけで修正する方法login_required

関連する問題