認證之匿名使用者

2022-07-22 05:12:10 字數 2123 閱讀 9171

需求:匿名使用者和user都能訪問這條url

path('

host/

', views.hostview.as_view()), #

匿名測試

流程:1、認證時,user訪問返tuer,匿名使用者必須返回none,即不處理

#

認證類class

authentication(object):

defauthenticate(self, request):

token = request.get.get('

token')

obj = models.token.objects.filter(token=token).first()

ifobj:

#return obj.user.username, obj.token

return

obj.user, obj.token

else

:

#raise exceptions.authenticationfailed('驗證失敗')

return

none

#不加這個方法會報錯

defauthenticate_header(self, request):

pass

#

匿名使用者和user都能訪問

class

hostview(viewsets.modelviewset):

authentication_classes = [utils.authentication] #

認證是匿名還是user,匿名使用者在認證時返回none

pagination_class = #

都能訪問不需要加許可權

def list(self, request, *args, **kwargs):

print

(request.data)

return response('

我是匿名使用者

')

2、其它正常檢視的許可權便要加多一層處理,需要判斷當前訪問物件時user還是匿名使用者

#

許可權類class

permissioncheck(object):

message = "

請登入"

#這裡的request屬於apiview重新構造的reuqest,經過認證後,認證元件返回乙個request.user和request.auth,

#這兩個的返回結果在自己的認證類中自定義返回的結果,所以這裡能夠直接呼叫

defhas_permission(self, request, view):

if request.user: #

如果是使用者 繼續走下一條許可權

return

true

else

:

return

false

class

permissionchecktwo(object):

message = "

你不是超級管理員

"def

has_permission(self, request, view):

if request.user.role == 3:

return

true

else

:

return false

class

bookview(viewsets.modelviewset):

authentication_classes = [utils.authentication, ]

permission_classes = [utils.permissioncheck, utils.permissionchecktwo] #

加多一次許可權驗證

queryset =models.book.objects.all()

serializer_class = serializers.bookserializers

也可以在settings中設定匿名使用者:  

rest_framework =

Django之auth模組(使用者認證)

auth模組是對登入認證方法的一種封裝,之前我們獲取使用者輸入的使用者名稱及密碼後需要自己從user表裡查詢有沒有使用者名稱和密碼符合的物件,而有了auth模組之後就可以很輕鬆的去驗證使用者的登入資訊是否存在於資料庫中。除此之外,auth還對session做了一些封裝,方便我們校驗使用者是否已登入 ...

MQTX BROKER 使用,關閉匿名認證

訪問是否啟動成功 127.0 0.1 18083 賬號 admin 密碼 public 停止服務命令 進入cmd視窗 bin emqx stop 關閉服務 新增使用者 使用者名稱密碼認證 基於 mqtt 登入使用者名稱 username 密碼 password 認證。etc plugins emqx...

刪除匿名使用者

刪除 在mysql剛剛被安裝後,存在使用者名稱 密碼為空的使用者。這使得資料庫伺服器有無需密碼被登入的可能性。為消除隱患,將刪除。root sample mysql u root p 通過密碼用root登入 enter password 在這裡輸入密碼 welcome to the mysql mo...