Uso simples de sessão e cookie no Django

1. Compreensão simples

Sessão e cookie são dois objetos sob solicitação. Manipular seus valores é manipular o dicionário, e definir suas propriedades é chamar métodos.

O rastreamento de sessão é uma tecnologia comumente usada em programas da Web para rastrear toda a sessão do usuário. Os aplicativos da Web usam o protocolo HTTP para transferir dados. O protocolo HTTP é um protocolo sem estado. Assim que a troca de dados for concluída, a conexão entre o cliente e o servidor será encerrada e uma nova conexão precisará ser estabelecida para a troca de dados novamente. Isso significa que o servidor não pode rastrear a sessão a partir da conexão. Para resolver esse problema, as tecnologias de rastreamento de sessão comumente usadas são Cookie e Session. O cookie determina a identidade do usuário gravando informações no lado do cliente e o Session determina a identidade do usuário gravando as informações no lado do servidor.

Para usar a sessão no Django, você deve primeiro executar (o processo de criação de uma tabela):
python manage.py makemigrations
python manage.py migrate

Insira a descrição da imagem aqui

二 、 sessão :

* Mecanismo de armazenamento de sessão :
(1) Quando um usuário visita o servidor, o servidor gera uma string aleatória;
(2) Quando o usuário efetua login com sucesso, {sessionID: random string} é organizado em pares de chave-valor e adicionado ao cookie Ele foi enviado ao usuário;
(3), o servidor para o cliente seqüência aleatória no cookie é enviado para fazer a chave, as informações do usuário para tornar o valor armazenado informações do usuário;

Portanto, o formato da sessão armazenada pelo servidor deve ser:
{sessionid: {'username': xx, 'password': yy}}
request.session ['username'] = 'xx'
gera um sessionid aleatório por padrão e implica a passagem O sessionID encontra a etapa de informação do usuário;

1. Definir valor (dicionário):

request.session['username'] = 'Genius淼'
request.session['password'] = 'genius123'

request.session.setdefault('username','password')#username 默认值为'password'

2. Defina os atributos :

request.session.set_expiry(value) -- 设置session过期时间,默认是两周。

value:
- 数字(单位:秒)
- datatime(具体日期)
- None(依据全局失效策略)
- timedelta(时间增量)
注意:request.session.set_expiry(timedelta(days=30))时要在setting中添加:SESSION_SERIALIZER='django.contrib.sessions.serializers.PickleSerializer'

3. Veja

request.session.keys()  
request.session.values() 
request.session.items()	

4. Obtenha

request.session["username"] 		 #  以字典形式读取,键不存在会报错
request.session.get("username")		 #  以get方法形式读取,键不存在会报错
request.session.get("username",None) #  加参,如果username不存在则读取到None
request.session.session_key		     # 用户session的随机字符串

5. Excluir

del request.session["username"]		# 以字典形式删除
request.session.delete("username")	# 以方法形式删除
request.session.delete('session_key') #删除所有session
request.session.clear()				# 删除所有session
request.session.clear_expired()		# 删除已失效session
Configurar sessão na configuração (transferência)

Local de armazenamento da sessão:
banco de dados (padrão) SESSION_ENGINE = 'sdjango.contrib.sessions.backends.db'
cache SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
arquivo SESSION_ENGINE = 'django.contrib.sessions.backends.file'
cache + Banco de dados SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db'
cookie criptografado (equivalente a não usar nenhuma sessão e salvar informações confidenciais para o cliente) SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies'

#sessionConfiguration FileSESSION_ENGINE
= 'django.contrib.sessions.backends.db' # Engine (padrão)

SESSION_FILE_PATH = caminho do arquivo # caminho do arquivo de cache, se for Nenhum, use o módulo tempfile para obter um endereço temporário tempfile.gettempdir ()

SESSION_COOKIE_NAME = "sessionid" # A chave quando o cookie de sessão é salvo no navegador, a saber: sessionid = string aleatória (padrão)

SESSION_COOKIE_PATH = "/" # Caminho para salvar o cookie da sessão (padrão)

SESSION_COOKIE_DOMAIN = Nenhum # O nome de domínio salvo pelo cookie de sessão (padrão)

SESSION_COOKIE_SECURE = False # Se o Https transmite cookies (padrão)

SESSION_COOKIE_HTTPONLY = True # Se o cookie de sessão suporta apenas transmissão http (padrão)

SESSION_COOKIE_AGE = 1209600 # Data de expiração do cookie da sessão (2 semanas) (padrão)

SESSION_EXPIRE_AT_BROWSER_CLOSE = False # Se deve fechar o navegador para fazer a sessão expirar (padrão)

SESSION_SAVE_EVERY_REQUEST = False # Se deseja salvar a sessão para cada solicitação, salve a sessão após a modificação padrão (padrão)


Três, cookie:

No django, o cookie é definido através do método set_cookie após um HttpResponse ser declarado. Ele salva cookies no cliente do navegador definindo pares de valores-chave no cabeçalho de resposta Set-Cookie.

res = HttpResponse()		# 具体是什么响应要看自己的return

  • Definir valor (dicionário):

     res.set_cookie('username','password')
     res.set_cookie('Genius淼','genius123')
    
  • Obtivermos

      username = request.COOKIES.get('username')
    
  • excluir

      res.delete_cookie('username')
    
  • Defina as propriedades :
    visualize a classe HttpResponseBase:

    def set_cookie(self, key, value='', max_age=None, expires=None, path='/',
           				domain=None, secure=False, httponly=False):
                   	 ......
    

    Parâmetros passáveis :
    chave : o nome do
    valor do cookie : o valor do cookie
    max_age : tempo de expiração, unidade-segundo. O padrão é -1 ——> número negativo: fechar o navegador é inválido; 0 significa excluir o cookie.
    expira : data de expiração, o mesmo que
    caminho set_expiry da sessão : o caminho de uso do cookie, '/' significa que todos são permitidos. '/ index /' só pode ser acessado em / index, preste atenção ao último /
    domínio : o nome de domínio que pode acessar o cookie, começando com '.', como'.baidu.com '
    seguro : se o cookie é usado apenas Transmissão de protocolo seguro, o padrão é False. Ao usar https, secure deve ser definido como True
    httponly : ele é restrito para obter pares de chave-valor no console do navegador, mas a ferramenta de captura de pacote não pode ser restrita.

    举例 : res.set_cookie (“idade”, “10”, max_age = “10”, expira = “2019-01-31”,)


  • Valor de configuração de criptografia : res.set_signed_cookie ('idade', '10', salt = “Eu sou secreto”)
    Valor: request.get_signed_cookie ('idade', sal = “Eu sou secreto”) é
    como adicionar uma cifra extra

Referência de sessão e cookie

Acho que você gosta

Origin blog.csdn.net/GeniusXYT/article/details/103096307
Recomendado
Clasificación