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

django 實(shí)現(xiàn)編寫控制登錄和訪問權(quán)限控制的中間件方法

 更新時間:2019年01月15日 08:53:28   作者:云中不知人  
今天小編就為大家分享一篇django 實(shí)現(xiàn)編寫控制登錄和訪問權(quán)限控制的中間件方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

django中,很多時候我們都需要有一個地方來進(jìn)行更加詳細(xì)的權(quán)限控制,例如說哪些用戶可以訪問哪些頁面,檢查登錄狀態(tài)等,這里的話就涉及到了中間件的編寫了。

在django項目下的setting.py文件中,有一個MIDDLEWARE_CLASSES的字段,這里存放的就是中間件,用戶的訪問會先經(jīng)過這些中間件的處理之后再給各種views函數(shù)進(jìn)行處理。在這個參數(shù)中加入我們接下來要編寫的中間件:

MIDDLEWARE_CLASSES = (
  'django.contrib.sessions.middleware.SessionMiddleware',
  'django.middleware.common.CommonMiddleware',
  #'django.middleware.csrf.CsrfViewMiddleware',
  'django.contrib.auth.middleware.AuthenticationMiddleware',
  'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
  'django.contrib.messages.middleware.MessageMiddleware',
  'django.middleware.clickjacking.XFrameOptionsMiddleware',
  'django.middleware.security.SecurityMiddleware',
  'myTransport.views.ExteriorAuthMiddleware',
)

接下來實(shí)現(xiàn):

class ExteriorAuthMiddleware(object):
  #判斷登錄 權(quán)限控制
	def process_request(self,request):
		if request.method == 'GET':
			requestData = request.GET
		else:
			requestData = request.POST		
		request.session['errmsg']=''
		#如果用戶沒有認(rèn)證,需要轉(zhuǎn)到登錄界面
		if not request.session.has_key('_auth_user_id') and 'login' not in request.path:
			return HttpResponseRedirect('/login/')
		#如果用戶已經(jīng)登錄
		elif request.session.has_key('_auth_user_id') and 'logout' not in request.path:
			###權(quán)限檢驗(yàn)
			try:
				u=User.objects.get(username=request.user)
				#判斷token是否過期
				if u.usertoken_set.all():
					if u.usertoken_set.all()[0].token != request.session['Token']:
						logger.error("token 不一致!")
						return HttpResponseRedirect('/login/')
				else:
					logger.error("獲取不到token!")
					return HttpResponseRedirect('/login/')
 
				url=request.META['PATH_INFO']
				print request.get_full_path()
				#判斷用戶是否有某些頁面的訪問權(quán)限,如果沒有,轉(zhuǎn)到404頁面
				if not u.is_superuser:
					if url.startswith('/transport/user_') or url.startswith('/log/'):
						return error403(request, "權(quán)限不夠!")
			except Exception,e:
				logger.error("in function process_request :"+ str(e))
				return HttpResponseRedirect('/login/')
		#用戶已登錄,而且url是login,將轉(zhuǎn)到首頁
		if request.session.has_key('_auth_user_id') and 'login' in request.path:
			return HttpResponseRedirect('/index/')

以上只是個簡單的示例。

這篇django 實(shí)現(xiàn)編寫控制登錄和訪問權(quán)限控制的中間件方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • pandas如何統(tǒng)計某一列或某一行的缺失值數(shù)目

    pandas如何統(tǒng)計某一列或某一行的缺失值數(shù)目

    這篇文章主要介紹了pandas如何統(tǒng)計某一列或某一行的缺失值數(shù)目,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Python Flask框架模塊安裝級使用介紹

    Python Flask框架模塊安裝級使用介紹

    這篇文章主要為大家介紹了Python Flask框架模塊安裝級使用介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • python腳本設(shè)置系統(tǒng)時間的兩種方法

    python腳本設(shè)置系統(tǒng)時間的兩種方法

    這篇文章主要介紹了python腳本設(shè)置系統(tǒng)時間的兩種方法,其一是調(diào)用socket直接發(fā)送udp包到國家授時中心,其二是調(diào)用ntplib包,感興趣的小伙伴們可以參考一下
    2016-02-02
  • Python可視化學(xué)習(xí)之seaborn調(diào)色盤

    Python可視化學(xué)習(xí)之seaborn調(diào)色盤

    seaborn是在matplotlib基礎(chǔ)上封裝的,所以matplotlib的調(diào)色盤seaborn都可以使用。本文系統(tǒng)介紹seaborn調(diào)色盤,相較于matplotlib,有諸多不同,需要的可以參考一下
    2022-02-02
  • Python SMTP發(fā)送電子郵件的示例

    Python SMTP發(fā)送電子郵件的示例

    這篇文章主要介紹了Python SMTP發(fā)送電子郵件的示例,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-09-09
  • Python基礎(chǔ)數(shù)據(jù)類型tuple元組的概念與用法

    Python基礎(chǔ)數(shù)據(jù)類型tuple元組的概念與用法

    元組(tuple)是 Python 中另一個重要的序列結(jié)構(gòu),和列表類似,元組也是由一系列按特定順序排序的元素組成,這篇文章主要給大家介紹了關(guān)于Python基礎(chǔ)數(shù)據(jù)類型tuple元組的概念與使用方法,需要的朋友可以參考下
    2021-07-07
  • Python繪制土地利用和土地覆蓋類型圖示例詳解

    Python繪制土地利用和土地覆蓋類型圖示例詳解

    本文介紹了如何使用Python繪制土地利用和土地覆蓋類型圖,并提供了詳細(xì)的代碼示例,通過安裝所需的庫,準(zhǔn)備地理數(shù)據(jù),使用geopandas和matplotlib等庫,可以繪制出土地利用和覆蓋類型圖,感興趣的朋友一起看看吧
    2025-01-01
  • 簡單了解Pandas缺失值處理方法

    簡單了解Pandas缺失值處理方法

    這篇文章主要介紹了簡單了解Pandas缺失值處理方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • python入門之算法學(xué)習(xí)

    python入門之算法學(xué)習(xí)

    這篇文章主要介紹了python入門之算法學(xué)習(xí),文中介紹的非常詳細(xì),對想要入門python的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-04-04
  • python3發(fā)送request請求及查看返回結(jié)果實(shí)例

    python3發(fā)送request請求及查看返回結(jié)果實(shí)例

    這篇文章主要介紹了python3發(fā)送request請求及查看返回結(jié)果實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04

最新評論

阿拉尔市| 南城县| 大洼县| 邯郸县| 南丹县| 阳泉市| 乌拉特后旗| 安达市| 东阳市| 宽甸| 龙井市| 广元市| 卢湾区| 宽城| 根河市| 基隆市| 怀柔区| 彰化市| 邓州市| 界首市| 清水县| 子长县| 江阴市| 长沙县| 科技| 绿春县| 鲁山县| 张家口市| 仪征市| 富阳市| 民丰县| 民权县| 丹寨县| 赫章县| 建水县| 延川县| 子洲县| 黔南| 浏阳市| 荃湾区| 黎城县|