django.contrib.auth を使用するアプリがありますが、Django の組み込みのアクセス許可システムは使用しません。代わりに、ビューには @login_required デコレーターがあり、ユーザーが属するグループを確認し、グループに応じてビュー内のコード実行のさまざまな分岐に従います。
ユーザーは 1 つのグループにのみ所属できます。
毎回ユーザーのグループをチェックするのは多すぎるように思われるので、セッションでユーザーのグループを知らせる Django ミドルウェアを作成しようとしています。
以下のコードを見ると、ミドルウェアは希望どおりに動作しますか?
class SetGroupMiddleware(object):
def process_request(self, request):
check_if_already_set = request.session.get('thegroup', 'notset')
if check_if_already_set == 'notset':
if request.user.id: # User is not AnonymousUser
groups = request.user.groups.all()
if groups: # actually this will always be True
request.session['thegroup'] = str(groups[0].name) # flowchart of the app ensures that the logged in user will only have one group, and that the user will always have a group
else:
request.session['thegroup'] = 'nogroup' # for completeness
次に、必要に応じて request.session['thegroup'] を確認します。
あなたの提案や意見が必要です。このように処理された場合、セッションは安全ですか? これはまったく機能しますか?私は、Django、Python、およびプログラミング全般が初めてです。
ありがとう。