表題通りの問題に詰まっています。
Djangoデフォルトのsqliteを利用していた場合には問題なくログインページが動いたにも関わらず、AmazonRDS(Aurora MySQL)に変更した途端、「パスワードが間違っています」というエラーが表示される様になってしまいました。
djangoとDBの接続が正しく行われていることは確認済み(python manage.py dbshellの結果)で、DBに想定通りのemailとpasswordが格納されていることもSELECT文で確認しています。
ログインに使用ている情報はごく一般的なメールアドレスとパスワードで半角英数字のみ使用しています。
動作環境
・Amazon linux2
・Apache 2.4,mod_wsgi利用
・Django2.2
python
1#ログイン画面 2class LoginFormView(LoginView): 3 form_class = forms.LoginForm 4 template_name = 'register/login.html' 5 6 #ログインUserの権限によって遷移先を切り替えるため、Login成功時に呼ばれる関数をoverrideする 7 def form_valid(self, form): 8 auth_login(self.request, form.get_user()) 9 #form上に表示されているのはemailだが、Djangoデフォルトビューの関係でusername属性が指定されていることに注意 10 login_user_email = form.cleaned_data['username'] 11 #loginされたuserがsuperuserであるか確認する。DBからgetする場合はtry文で囲いエラー時の処理を挟んでおくルール 12 try : 13 #DBからsupeuser権限の有無をbool型で取得する 14 login_user = models.Users.objects.get(email=login_user_email) 15 bool_superuser = login_user.is_superuser 16 except : 17 messages.info(self.request, 'エラーが発生しました。再度ログインしてください。それでも解決しない場合は、管理者に問い合わせてください。') 18 return redirect("/login") 19 #ログインしたユーザーが所属している企業をsessionに格納しておく。 20 self.request.session['company_id'] = login_user.company_id 21 #superuserでログインされた場合のみ、会社一覧ページへ遷移する 22 if bool_superuser : 23 return redirect("/company/index") 24 return HttpResponseRedirect(self.get_success_url())
html
1 <div class="error-message"> 2 {% if form.errors %} 3 <p class="text-danger">Your username and password didn't match. Please try again.</p> 4 {% endif %} 5 6 {% if next %} 7 {% if user.is_authenticated %} 8 <p class="text-danger">Your account doesn't have access to this page. To proceed, 9 please login with an account that has access.</p> 10 {% else %} 11 <p class="text-danger">このページを参照するアクセス権限がありません。必要なアクセス権限を持っているアカウントで再試行してください。 12 </p> 13 {% endif %} 14 {% endif %} 15 </div>
あなたの回答
tips
プレビュー