最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在Django中管理Users和Permissions以及Groups的方法

 更新時間:2015年07月23日 10:59:36   投稿:goldensun  
這篇文章主要介紹了在Django中管理Users和Permissions以及Groups的方法,Django是最具人氣的Python web開發(fā)框架,需要的朋友可以參考下

管理認(rèn)證系統(tǒng)最簡單的方法是通過管理界面。然而,當(dāng)你需要絕對的控制權(quán)的時候,有一些低層 API 需要深入專研,我們將在下面的章節(jié)中討論它們。
創(chuàng)建用戶

使用 create_user 輔助函數(shù)創(chuàng)建用戶:

>>> from django.contrib.auth.models import User
>>> user = User.objects.create_user(username='john',
...         email='jlennon@beatles.com',
...         password='glass onion')

在這里, user 是 User 類的一個實(shí)例,準(zhǔn)備用于向數(shù)據(jù)庫中存儲數(shù)據(jù)。(create_user()實(shí)際上沒有調(diào)用save())。 create_user() 函數(shù)并沒有在數(shù)據(jù)庫中創(chuàng)建記錄,在保存數(shù)據(jù)之前,你仍然可以繼續(xù)修改它的屬性值。

>>> user.is_staff = True
>>> user.save()

修改密碼

你可以使用 set_password() 來修改密碼:

>>> user = User.objects.get(username='john')
>>> user.set_password('goo goo goo joob')
>>> user.save()

除非你清楚的知道自己在做什么,否則不要直接修改 password 屬性。 其中保存的是密碼的 加入salt的hash值 ,所以不能直接編輯。

一般來說, User 對象的 password 屬性是一個字符串,格式如下:

hashtype$salt$hash

這是哈希類型,salt和哈希本身,用美元符號($)分隔。

hashtype 是 sha1 (默認(rèn))或者 md5 ,它是用來處理單向密碼哈希的算法。 Salt是一個用來加密原始密碼以創(chuàng)建哈希的隨機(jī)字符串,例如:

sha1$a1976$a36cc8cbf81742a8fb52e221aaeab48ed7f58ab4

User.set_password() 和 User.check_password() 函數(shù)在后臺處理和檢查這些值。

salt化得哈希值

一次 哈希 是一次單向的加密過程,你能容易地計(jì)算出一個給定值的哈希碼,但是幾乎不可能從一個哈希碼解出它的原值。

如果我們以普通文本存儲密碼,任何能進(jìn)入數(shù)據(jù)庫的人都能輕易的獲取每個人的密碼。 使用哈希方式來存儲密碼相應(yīng)的減少了數(shù)據(jù)庫泄露密碼的可能。

然而,攻擊者仍然可以使用 暴力破解 使用上百萬個密碼與存儲的值對比來獲取數(shù)據(jù)庫密碼。 這需要花一些時間,但是智能電腦驚人的速度超出了你的想象。

更糟糕的是我們可以公開地得到 rainbow tables (一種暴力密碼破解表)或預(yù)備有上百萬哈希密碼值的數(shù)據(jù)庫。 使用rainbow tables可以在幾秒之內(nèi)就能搞定最復(fù)雜的一個密碼。

在存儲的hash值的基礎(chǔ)上,加入 salt 值(一個隨機(jī)值),增加了密碼的強(qiáng)度,使得破解更加困難。 因?yàn)槊總€密碼的salt值都不相同,這也限制了rainbow table的使用,使得攻擊者只能使用最原始的暴力破解方法。

加入salt值得hash并不是絕對安全的存儲密碼的方法,然而卻是安全和方便之間很好的折衷。
處理注冊

我們可以使用這些底層工具來創(chuàng)建允許用戶注冊的視圖。 最近每個開發(fā)人員都希望實(shí)現(xiàn)各自不同的注冊方法,所以Django把寫注冊視圖的工作留給了你。 幸運(yùn)的是,這很容易。

作為這個事情的最簡化處理, 我們可以提供一個小視圖, 提示一些必須的用戶信息并創(chuàng)建這些用戶。 Django為此提供了可用的內(nèi)置表單, 下面這個例子就使用了這個表單:

from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.http import HttpResponseRedirect
from django.shortcuts import render_to_response

def register(request):
 if request.method == 'POST':
  form = UserCreationForm(request.POST)
  if form.is_valid():
   new_user = form.save()
   return HttpResponseRedirect("/books/")
 else:
  form = UserCreationForm()
 return render_to_response("registration/register.html", {
  'form': form,
 })

這個表單需要一個叫 registration/register.html 的模板。這個模板可能是這樣的:

{% extends "base.html" %}

{% block title %}Create an account{% endblock %}

{% block content %}
 <h1>Create an account</h1>

 <form action="" method="post">
  {{ form.as_p }}
  <input type="submit" value="Create the account">
 </form>
{% endblock %}


相關(guān)文章

  • python中的import絕對導(dǎo)入與相對導(dǎo)入詳解

    python中的import絕對導(dǎo)入與相對導(dǎo)入詳解

    這篇文章主要介紹了python中的import絕對導(dǎo)入與相對導(dǎo)入詳解,在使用python做一些簡單項(xiàng)目時,import一般不會出現(xiàn)問題,但項(xiàng)目結(jié)構(gòu)復(fù)雜時,import可能發(fā)生報(bào)錯,需要的朋友可以參考下
    2023-11-11
  • pandas數(shù)據(jù)合并之pd.concat()用法詳解

    pandas數(shù)據(jù)合并之pd.concat()用法詳解

    本文主要介紹了pandas數(shù)據(jù)合并之pd.concat()用法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Python中使用語句導(dǎo)入模塊或包的機(jī)制研究

    Python中使用語句導(dǎo)入模塊或包的機(jī)制研究

    這篇文章主要介紹了Python中使用語句導(dǎo)入模塊或包的機(jī)制研究,同時對比了幾種導(dǎo)入包或模塊的語句并簡要說明了這幾種方法之間的幾點(diǎn)優(yōu)劣,需要的朋友可以參考下
    2015-03-03
  • Python實(shí)現(xiàn)二叉搜索樹BST的方法示例

    Python實(shí)現(xiàn)二叉搜索樹BST的方法示例

    這篇文章主要介紹了Python實(shí)現(xiàn)二叉搜索樹BST的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • 跟老齊學(xué)Python之大話題小函數(shù)(2)

    跟老齊學(xué)Python之大話題小函數(shù)(2)

    上篇文章我們講訴了map 和lambda函數(shù)的使用,本文我們繼續(xù)來看看reduce和filter函數(shù),有需要的朋友可以參考下
    2014-10-10
  • pytorch梯度剪裁方式

    pytorch梯度剪裁方式

    今天小編就為大家分享一篇pytorch梯度剪裁方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • python 兩種方法刪除空文件夾

    python 兩種方法刪除空文件夾

    這篇文章主要介紹了python 兩種方法刪除空文件夾,幫助大家更好的利用python處理文件,感興趣的朋友可以了解下
    2020-09-09
  • 對numpy.append()里的axis的用法詳解

    對numpy.append()里的axis的用法詳解

    今天小編就為大家分享一篇對numpy.append()里的axis的用法詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • Python中的?enumerate和zip詳情

    Python中的?enumerate和zip詳情

    這篇文章主要介紹了Python中的?enumerate和zip,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-05-05
  • 一篇文章帶你詳細(xì)了解python中一些好用的庫

    一篇文章帶你詳細(xì)了解python中一些好用的庫

    這篇文章主要推薦了一些好用的Python庫,都有這不錯的群眾基礎(chǔ),非常好用,也都很實(shí)用,推薦給大家,希望能夠給你帶來幫助
    2021-09-09

最新評論

买车| 旬阳县| 徐闻县| 济源市| 彩票| 荔浦县| 天水市| 鄢陵县| 凤翔县| 固阳县| 清丰县| 神农架林区| 杂多县| 望谟县| 大田县| 沈丘县| 天峨县| 蒲江县| 浪卡子县| 南开区| 林西县| 车险| 涿鹿县| 乌审旗| 沙湾县| 江津市| 天长市| 鄂托克旗| 鄯善县| 罗江县| 桐乡市| 健康| 合川市| 蚌埠市| 武功县| 三门峡市| 任丘市| 县级市| 宁都县| 台湾省| 邛崃市|