質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

Q&A

0回答

1155閲覧

DjangoのDBをamazonRDSに変更したら、LoginViewが機能しなくなった

bullton

総合スコア39

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

0グッド

0クリップ

投稿2020/03/04 03:41

編集2020/03/04 06:14

表題通りの問題に詰まっています。
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>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

FiroProchainezo

2020/03/04 05:13

ぱっと見では「パスワードが間違っています」と表示される場所はないと思うのですが、どこかにあるのでしょうか?
bullton

2020/03/04 06:10

失礼しました。 htmlにて記載していたものなので、該当ファイルを追加しました。 合わせて、ご確認いただけると幸いです。
FiroProchainezo

2020/03/04 07:20

修正していただいたようなのですが、「パスワードが間違っています」はどこにあるのでしょうか・・・。 現象が再現する最小のコードを提供いただけませんか? bulltonさんの頭の中にだけしかないものはわからないです。 とりあえず、sqliteのものをMySQLにいきなり移行して動くかどうかはわからないので、ローカル環境にMySQLを入れて確認してみてはいかがですか?
bullton

2020/03/04 08:33

「パスワードが間違っています」というエラーはhtml上の「Your username and password didn't match. Please try again.」を勝手に解釈していたものです。 LoginViewのform.is_validでerrorが発生している様で、それの原因を掴めておりません。 ご指摘通り、ローカルで動作確認をしてみましたが、同様の症状が発生しております。
FiroProchainezo

2020/03/05 04:25

ローカルで再現して良かったです。 現象が再現する最小の実行できるコードを提供いただければお力になれるかもしれません。 ローカルで再現したということは、Amazon Linux2/Apache2.4/mod_wsgiは関係なさそうですね。 ローカルPCのOS、インストールしたDB、Django, Pythonのバージョン、現象が再現する最小の実行できるコードで更新いただき、タグも書き換えてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問