こんにちは!縁紡ぐです。
今回はDjangoの一括ログイン設定に関する記事です。ぜひ参考にしてみてください!!
目次
Django Global Login Required Middlewareをインストールして設定する
ログイン画面以外は、ログインしていないとリクエストしてもログイン画面に強制的にもどすことがほとんど。
LoginRequiredMixinを継承することで実装はできるけど、設定もれをしているとログインしていなくてもリクエストできちゃいます💦
こんなの面倒だし、一括でログイン強制にしてログインしていなくても使えるのは、これだけよ!って設定の方が安全❕
Django では、『Django Global Login Required Middlewaredjango-boost』というライブラリーを使うとめっちゃ楽に実装できる!
MITライセンスで利用可能という、とても嬉しいライブラリーです。
ミドルウェアを使うと開発の時間もテストも削減されていいいことがいっぱい!
毎回思いますが、無償で配ってくれる人に感謝です😀
インストール
インストールは簡単!
pip install django-glrm
たっとこれだけでインストールは完了です。
次は設定をしていきます。
settings.py のMIDDLEWAREに追加
設定ファイルの、MIDDLEWAREに追加。
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'global_login_required.GlobalLoginRequiredMiddleware', # ログイン一括強制
]
これだけで設定完了
Viewでログイン必須を外す方法
from global_login_required import login_not_required # これを追加
from django.views.generic import ListView
@login_not_required # これでログイン必須を外す
class test_ClassBasedView_decorator(ListView):
from django.views.generic import ListView class test_ClassBasedView_property_public(ListView): LOGIN_NOT_REQUIRED = True # Makes the view publicly available def get(self, request, *args, **kwargs): return HttpResponse("Response from view.")
URLでログイン必須を外す方法
from global_login_required import login_not_required
urlpatterns = [
path('apps_list/', login_not_required(test_ClassBasedView_decorator.as_view())),
]
Publicでログイン必須を外すViewでの方法
PUBLIC_VIEWS = [
'django.contrib.auth.views.login',
'myapp.views.the_view',
]
Publicでログイン必須を外すURLでの方法
PUBLIC_PATHS = [
'*' % MEDIA_URL,
'/accounts/.*',
]
コメント