A、クッキー
クライアント技術は、ブラウザにデータ情報を格納し、辞書構造は、即ち、キー値、構造体に格納されています。
クッキーサーバが作成されますが、クライアントに保存され、クライアントが(クッキーがリクエストヘッダ情報の一部であるため)クッキーがサーバに情報を送信するたびに要求を送信します
クッキーは、クロスブラウザ、クロスドメインができないことができない、中国をサポートしていません。
1、クッキーを設定します
HttpResponse.set_cookie()
response.set_signed_cookie( "クッキー名称"、 "クッキー值"、塩= "盐")
プロパティ:キー
値
最大エージング有効期間、秒単位で、100秒が自動的にNoneを無期限に設定期限切れ後にブラウザが100の実効値として(デフォルトでは)失敗した0の場合は無効として指定されています
10日に代表される有効期限が切れ、日時の有効期限が切れるか、サポートはtimedeltaは、特定の日時を指定することができます=はtimedelta(日= 10)が期限切れ
最大エージングと指定された2つのxepires
#通常の設定、クリアテキストの表示 DEF ますsetcookie(要求): レスポンス =のHttpResponse(' 配置されたCOOKIE成功' ) response.set_cookie(' 名前'、' エゴン' ) の戻り応答
#塩の設定は、暗号化された形式で表示 DEF (要求を)do_login: のuname = request.POST.get(' のuname ' ) レスポンス = HttpResponseRedirect(リバース(' アプリケーション:鉱山' )) #のresponse.set_cookie( 'のuname'、 uname、max_ageの= 60) response.set_signed_cookie(' コンテンツ'、のuname、" ロック" ) の戻り応答
2、GET
HttpRequest.COOKIES.get(キー)
request.get_signed_cookie( "クッキー名称"、塩= "盐")
デフgetcookie(リクエスト): リターンはHttpResponse(request.COOKIES.get(' 名前'))
デフ鉱山(リクエスト): #のuname = request.COOKIES.get( "コンテンツ") してみてください: のuname = request.get_signed_cookie(" コンテンツ"、塩= " ロック" ) 場合は、uname: #のリターンのHttpResponse(のuname) リターンがレンダリング(リクエスト、' mine.html ' = {コンテキスト" のuname " )のuname} 以外Eとして例外: 印刷(" 获取失败" ) 戻りリダイレクト(逆('アプリ:ログイン"))
3、削除
response.delete_cookie(キー)
デフログアウト(リクエスト): 応答 =リダイレクト(逆(" アプリ:ログイン" )) response.delete_cookie(" コンテンツ" ) の戻り応答
二、セッション
セッションは、ユーザとサーバの「セッション」を示すために使用されます。サーバーと一致セッションID(クッキーの存在下で)クライアントのセッションIDを使用して送信され、クライアントの要求は、多くの場合、ログイン認証に使用するあなたの「セッション」を、見つけることができます。
セッションは、通常、変更を保存したい場合は道のデフォルトのデータベースセッションのセッションの保存を使用すると、Djangoにメモリに保存されている、我々は、セッション中のRedisに保存することができますSESSION_ENGINE構成情報を追加する必要があります。
図1に示すように、データ・ストレージ
HttpRequest.session [キー] =値、BASE64符号化するデータ
2、読み出しデータ
request.session.session_key获取SESSION_ID
HttpRequest.session.get(キー)
3、削除セッション
デルますrequest.session [ "キー"]
request.session.flushは()クッキーとセッションをクリア
request.session.clear()すべてのセッションをクリアします
DEF :(リクエスト)ログイン であれば request.method == " GET " : リターンレンダリング(リクエスト、' two_login.html ' ) のelif request.method == " POST " : ユーザ名 = request.POST.get(" ユーザ名" ) 要求を.session [ " ユーザ名" ] = ユーザ名が 返さのHttpResponse(" 登录成功" ) DEF 鉱山(要求): ユーザ名= request.session.get(" ユーザ名" ) プリント(request.session.session_key) リターンがレンダリング(リクエスト、' two_mine.html '、コンテキスト= 地元()) デフログアウト(リクエスト): 応答 =リダイレクト(逆(" myappに:鉱山' )) #デルますrequest.session ['ユーザ名'] #のresponse.delete_cookie(' SESSIONID ') #のセッションクッキー一起干掉 request.session.flush() の戻り応答
4、セッション重要な構成
①、SESSION_EXPIRE_AT_BROWSER_CLOSE =真
ブラウザが閉じられた、クリアローカルクッキー
②、SESSION_COOKIE_AGE = 60
設定した秒数がセッションを保存しました
5、拡張子:保存セッションのRedisへ
①インストールジャンゴ - Redisの-セッションライブラリー
ピップジャンゴ - Redisの-セッションをインストール
②構成でsettings.py
SESSION_ENGINE = ' redis_sessions.session ' SESSION_REDIS = { ' ホスト':'127.0.0.1 ' 、 ' ポート':6379 、 ' DB ' :0、 ' パスワード':' Redisの密码' 、 ' 接頭辞':" キー前缀" 、 ' SOCKET_TIMEOUT ':5 }
三、Token
トークンが生成された欠点サーバセッションテクノロジ(サーバーのリソース)を補うために、思考のトークンの検証は、「宇宙のための時間。」
最初の認証は、(ユーザー名とパスワードが正しい)成功すると、サーバーのユーザーデータは、署名トークンを生成するために、トークンは、クライアント、クライアントが要求を送信すると、サーバーにトークンを運ぶでしょう、サーバに送信されます認証が成功した認証トークンを、復号化し、ユーザ認証すること。そうでない場合、検証は失敗します。
1、使用
モバイル端末又はクライアントの開発に使用することが、一般的にそれ自体のトークンを格納する、移動端末のニーズJSON形式で送信、トークンは、トークンがアクティブ通過するとき、関連するデータを取得する必要があります