ホームページ >ウェブフロントエンド >htmlチュートリアル >旅の続き: Python Flask と MySQL Web アプリケーションを最初から構築する - パート 2
このシリーズの前の部分では、Python Flask と MySQL の使用を開始し、アプリケーションのユーザー登録部分を実装する方法を説明しました。このチュートリアルでは、アプリケーションにログインおよびログアウト機能を実装することで、次のレベルに進みます。
まず、GitHub から前のチュートリアルのソース コードを複製します。
リーリーソース コードのクローンを作成した後、part-1 ディレクトリに移動し、サーバーを起動します。
リーリーブラウザで https://localhost:5000 を指定すると、アプリケーションが実行されるはずです。
FlaskApp/templates に移動し、signin.html という名前の新しいファイルを作成します。 signin.html を開き、次の HTML コードを追加します:
リーリーapp.py を開き、ログイン インターフェイスの新しいルートを追加します。
リーリー次に、index.html と signup.html を開き、両方のページにログイン用の href
リンクを追加します: /signin
。すべての変更を保存し、サーバーを再起動します。
ブラウザで http://localhost:5000 を指定し、Login リンクをクリックすると、ログイン ページが表示されるはずです。
次に、ユーザーのログインを認証する関数を作成する必要があります。 Login をクリックすると、入力された電子メール アドレスとパスワードが Verify User 機能に送信されます。
ユーザーを認証するには、MySQL ストアド プロシージャが必要です。したがって、次のように MySQL ストアド プロシージャを作成します。 リーリー
sp_validateLogin を使用して、MySQL データベースから
username に基づいてユーザーの詳細を取得します。ハッシュ化されたパスワードを取得したら、ユーザーが入力したパスワードと照合して検証します。
リーリー
上記のコードに示すように、公開された電子メール アドレスとパスワードを_username と
_password に読み込みました。次に、パラメータ
_username を指定して
sp_validateLogin プロシージャを呼び出します。したがって、
validatelogin メソッド内で MySQL 接続を作成します。
リーリー
接続を作成した後、
を使用して接続し、cursor
を作成します。
リーリー
次に示すように、カーソルを使用して MySQL ストアド プロシージャを呼び出します。
以下に示すように、カーソルから取得したレコードを取得します。
リーリーデータにいくつかのレコードがある場合、取得したパスワードとユーザーが入力したパスワードを照合します。
リーリー上記のコードに示すように、
check_password_hash というメソッドを使用して、返されたハッシュ化されたパスワードがユーザーが入力したパスワードと一致するかどうかを確認します。すべてがうまくいけば、ユーザーを userHome.html
にリダイレクトします。エラーが発生した場合は、エラー メッセージとともに error.html が表示されます。
これは完全な
コードです:
リーリー
テンプレート フォルダーに
という名前のページを作成し、次の HTML コードを追加します。 リーリー さらに、templates
フォルダーにerror.html という名前のエラー ページを作成し、次の HTML コードを追加します。
リーリー
error.html には次のような要素があります:
変数の値は render_template 関数から渡すことができ、動的に設定できます。
ログインに成功すると、ユーザーをユーザーのホームページにリダイレクトするため、以下に示すように /userHome
というルートを作成する必要があります。
リーリー
Login リンクをクリックし、有効な電子メール アドレスとパスワードを使用してログインしてみます。ユーザー認証が成功すると、次のようなページが表示されます:
ユーザー認証が失敗した場合、ユーザーは以下に示すエラー ページにリダイレクトされます。
ここでは、別のエラー ページを使用してエラーを表示します。同じページを使用してエラー メッセージを表示する場合も問題ありません。
用户验证成功后,用户将被重定向到用户主页。但现在,即使是未经授权的用户也可以通过简单地浏览 URL http://localhost:5000/userhome 来查看主页。
为了限制未经授权的用户访问,我们将检查会话变量,并在用户成功登录时设置该变量。因此从 Flask 导入 session
:
from flask import session
我们还需要为会话设置一个密钥。因此,在 app.py
中,在应用程序初始化后,设置密钥,如下所示:
app.secret_key = 'why would I tell you my secret key?'
现在,在 validateLogin
方法中,在成功登录后将用户重定向到 /userhome
之前,设置 session
变量,如下所示:
session['user'] = data[0][0]
接下来,在 userhome
方法内,在渲染 userhome.html
之前检查会话变量。如果未找到会话变量,则重定向到错误页面。
@app.route('/userhome') def userHome(): if session.get('user'): return render_template('userhome.html') else: return render_template('error.html',error = 'Unauthorized Access')
保存所有更改并重新启动服务器。在不登录的情况下,尝试导航到 http://localhost:5000/userhome,由于您尚未登录,因此您应该被重定向到错误页面。
实现注销功能是最简单的。我们需要做的就是将会话变量 user
设置为 null 并将用户重定向到主页。
在app.py中,为 logout
创建一个新的路由和方法,如下所示:
@app.route('/logout') def logout(): session.pop('user',None) return redirect('/')
我们已经将注销按钮的 href 设置为 /logout
。因此,保存所有更改并重新启动服务器。在主页上,单击登录并尝试使用有效的电子邮件地址和密码登录。登录后,单击用户主页中的注销按钮,您应该会成功从应用程序注销。
在本教程的这一部分中,我们了解了如何实现用户登录和注销功能。我们还了解了如何限制对应用程序页面的未经授权的访问。在本教程的下一部分中,我们将实现登录用户在应用程序中添加和编辑博客文章的功能。
这篇文章已根据 Jacob Jackson 的贡献进行了更新。 Jacob 是一名 Web 开发人员、技术作家、自由职业者和开源贡献者。
以上が旅の続き: Python Flask と MySQL Web アプリケーションを最初から構築する - パート 2の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。