Skip to content

Python: Python3系でCookieを使ってみる。

Python: python3系でクッキーの概要

python3.7でクッキーを実装してみましたよ、のメモ書きです。

  1. ユーザがブラウザでユーザ名とパスワードを入力できるようHTMLを準備します。
  2. 入力されたユーザ名とパスワードをサーバ側でpythonにより取得します。
  3. ユーザ名とパスワードをクッキーに保存するようサーバー側でpythonからブラウザに命令します。
  4. 2回目以降のアクセスの際は、サーバー側で先にクッキーがないかを確認するようにします。
  5. 実際の実装例。


Python: HTMLでユーザ名とパスワード入力用フォームの作成

HTMLでユーザ名とパスワード入力用のページを準備します。

 <!-- ログインページの次に「next_page.py」に飛ぶ想定です。 -->
  <form action='./next_page.py' method='post'>
  <!-- ユーザ名入力用のフォーム作成 -->
  <input type='text' id='form_username' name='form_username' placeholder='ユーザ名'/>
  </br>
  <!-- パスワード入力用のフォーム作成 -->
  <input type='password' id='form_password' name='form_password' placeholder='パスワード'/>
  <input type="submit" name="button1" value="ログイン">
  </form>


Python: サーバー側でユーザが入力したユーザ名とパスワードを取り出す。

今回は、サーバー側でCGIをpythonで動かしました。
pythonのコードで、ユーザが入力してきたユーザ名とパスワードを取り出します。

import cgi

form = cgi.FieldStorage()
    if "form_username" in form:  #「form_username」は、上記のHTMLコードformタグ内のidです。
      f_name=form['form_username'].value
    else:
      pass

    if "form_password" in form: #「form_password」は、上記のHTMLコードformタグ内のidです。
      f_pw=form['form_password'].value
      password = f_pw 
    else:
      pass


Python: サーバー側で、クッキーに保存するHTMLを出力

ユーザが入力してきたユーザ名とパスワードを、ブラウザにクッキーとして保存するようにサーバー側でJavaScriptを準備します。

print('''
       <script>
       document.cookie = "user01={}"; 
       document.cookie = "pass01={}";
       </script>
        '''.format(f_name,f_pw))

「user01」と「pass01」の箇所は、自分の好きな名前でOKです。

pythonのコードでクッキーとして保存させるには、以下のようにすれば、OKなようです。

from http import cookies
cookie = cookies.SimpleCookie()
cookie["user01"] = f_name
cookie["pass01"] = f_pw


Python: サーバー側で、クッキーに保存されたデータがないか確認する。

ユーザが既にログインを行っており、クッキーに保存されたユーザ名とパスワードがないかを確認します。

import os
from http import cookies

cookie = cookies.SimpleCookie()
cookie.load(os.environ.get("HTTP_COOKIE",""))

# cookieの取得
try:
  cookie_name=cookie["user01"].value
  cookie_pw=cookie["pass01"].value
  username = cookie_name
  password = cookie_pw
except KeyError:
  cookie_name="nocookie"
  cookie_pw="nocookie"


Python: 実際の実装の順番

こんな順番で実装してみましたよ、の例です。

  1. 既に保存されているcookieがないか確認します。
  2. 保存されているcookieがなければ、送信されたフォーム内容の取得を実施。
  3. ユーザ名とパスワードを検証してOKであれば、クッキーに保存。
# 実装例
try:
  クッキー取得
except:
  if ユーザがユーザ名/パスワードを送信してきた:
    ユーザ名/パスワード取得
    ユーザ名とパスワードを検証
    if 検証結果がOK:
      クッキーに保存
    else 検証結果がNG:
      ユーザ名/パスワードを再入力するように催促  
  else ユーザがユーザ名/パスワードを送信してない:
    ユーザ名/パスワードを入力するように催促


Python: 参考サイト




コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA