CakePHP簡單的使用者認證案例

2022-03-17 09:25:51 字數 2509 閱讀 2447

需要做的3件事情:

認證使用者的方式(通常為校驗使用者的標識,比如使用者名稱/密碼組合) 跟蹤使用者訪問情況的方式(通常使用session) 校驗使用者是否已經認證通過的方式(通常是和session進行互動)

我們從如何驗證那些試圖訪問系統的使用者開始。通過認證的使用者資訊會被cake session component儲存在php session中。我們從session中取到使用者資訊後就可以判斷哪些操作是該使用者可以執行的。

登入操作

第乙個要完成的是登陸的view和action。這能給使用者提供乙個登陸的入口,同時也為系統提供了處理使用者資訊判斷是否可以訪問系統的機會。使用html helper可以很簡單的建立該form,目錄在/app/views/users/login.thtml:

1 23 4

5 67 8

9 10

11 12

13 14

15 16

17

the login credentials you supplied could not be recognized. please try again.

url('/users/login'); ?>" method="post">  

username:

input('username', array('size' => 20)); ?>  

password:

password('password', array('size' => 20)); ?>  

submit('login'); ?>  

對應這個簡單的檢視(view),還需要乙個action(/users/login),目錄在 /app/controllers/users_controller.php 。

login 檢視應當收集使用者登入資訊並將其提交給 users 控制器。users 控制器應當檢視這個使用者是否已在資料庫中,並檢驗密碼是否正確。如果使用者已經正確地登入,則把使用者名稱寫入會話並把使用者傳送到 index 操作。

**如下所示:

1 23 4

5 67 8

9 10

11 12

13 14

15 16

17 18

19 20

21 22

23 24

25 26

27 28

29 30

31 32

33 34

35 36

37 38

39 40

41

functionlogin()

// else, they supplied incorrect data:

else }

}

還不是很壞:如果你寫的簡鍊點,**應該不會超過20行。這個action的結果有這樣兩種:

① 使用者通過認證,將資訊存入session,並轉向到系統首頁

② 未通過認證,返回到登陸頁面,並顯示相關錯誤資訊。

提示:使用內建的 $this->user->findbyusername($your_username_variable_here) 在資料庫中搜尋使用者 用 $this->session->write(『user』, $your_username_variable_here) 把使用者的名稱寫到 session 中

現在可以正常訪問:

訪問校驗

現在我們可以認證使用者了,讓我們使系統可以踢除那些不登陸就希望自己訪問非公共內容的使用者。

一種辦法就是在controller中新增乙個函式來檢查session狀態。

建立 /app/app_controller.php:

1 23 4

5 67 8

9 10

11 12

13 14

15

classappcontrollerextendscontroller }

} ?>

現在你擁有了乙個可以確保未經登陸的使用者不能訪問系統受限內容的函式了,你可以在任意級別來控制,下面是一些例子:

①強制所有action都必須經過認證

1 23 4

5 67 8

9 10

11 12

13

classindexcontrollerextendsappcontroller }

?>

②在單獨的action中要求認證

1 23 4

5 67 8

9 10

11 12

13 14

functionknownusers()

注:尚未登入的會自動跳轉登入介面,。

登出操作

logout 操作應當從會話中刪除使用者的使用者名稱,並將使用者**到 login 操作。

1 23 4

5 67 8

9 10

11

functionlogout()

你已經掌握了一些基礎知識,可以開始實現自定義或者高階功能。我建議整合cake的acl控制是個不錯的開始。

利用AOP實現簡單的使用者認證

前言 最近博主剛好看了一些關於aop的知識,想到現在公司中的一些專案所有介面上都會手動認證使用者,就想到好像可以直接寫個切面就行了。切面類 author curtain date created in 2020 12 22 10 25 description 切面類 建立乙個aop切面類,只要在類上...

mongodb的使用者認證

mongodb預設是不認證的,預設沒有賬號,只要能連線上服務就可以對資料庫進行各種操作,mongodb認為安全最好的方法就是在乙個可信的環境中執行它,保證之後可信的機器才能訪問它,可能這些對一些要求高的環境,安全還不夠 mongodb提供使用者認證,需要在啟動時加上 auth開啟認證 認證前需要新增...

ngnix的使用者認證

有時我們會有這麼一種需求,就是你的 並不想提供乙個公共的訪問或者某些頁面不 希望公開,我們希望的是某些特定的客戶端可以訪問。那麼我們可以在訪問時要求進行身份認證,就如給你自己的家門加一把鎖,以拒絕那些不速之客 為了達到這個目的,我們去tengine的官網檢視文件 我開啟之後看見配置範例如下,以後不管...