ユーザーが一時的なパスワードを使用しているかどうかをキャッチし、使用している場合は新しいパスワードの作成を強制するページにリダイレクトする、小さなミドルウェアを作成しました。私の問題は、ユーザーがログインしていて一時パスワードを使用していない場合 (つまり、手動でパスワード変更 URL に移動した場合) にページが正常に機能することですが、一時パスワードを使用している場合、ミドルウェアからのリダイレクトにより 403 禁止ページが表示されることです。 .
ミドルウェアは、一時パスワードのチェック後に process_view で別の処理を行いますが、関連するコードは次のとおりです。
class MyMiddleware( object ):
def process_view( self, request, view_func, view_args, view_kwargs ):
if request.user.is_authenticated( ):
try:
if request.user.get_profile( ).using_temp:
return HttpResponseRedirect( reverse( 'change_password' ) )
except Object.DoesNotExist:
pass
# Not using temp password, let the request process
return None
問題を解決するために、render_to_response などを使用してテンプレートを直接レンダリングすることもできますが、ブラウザの URL が追跡できなくなり、レンダリングしたページを実際に終了できなくなることに注意してください。