Django 有 middleware,可以處理在進 View 之前的 HTTP Request,而在 BeeGo 裡,是稱做 Filter。在上篇裡,我們也有看到這部份。BeeGo 官方文件對這部份蠻匱乏的,Filter 裡有帶到一點點,Session module 也有帶到一點點。
BeeGo 原始碼的 plugins 目錄下,則是有實作了 auth (Basic authentication)、authz (Casbin)、apiauth (Token) 以及 CORS 。剛好可以拿來參考一下,做出自己的 Authentication。
先看一下 plugins/auth.go 裡的 Basic authentication 怎麼使用。
開啟 routers/router.go,在 import 加入
"github.com/astaxie/beego/plugins/auth"
然後再加入 Filter
// 略
beego.InsertFilter("/myuser/*", beego.BeforeRouter, auth.Basic("foobar", "pass"))
beego.Router("/myuser", &controllers.MyUserController{}, "get:GetAll")
// 略
重新編譯,在瀏覽器的網址列輸入 http://localhost:8080/myuser/ 時,就會跳出瀏覽器的 HTTP基本認証對話視窗了。
那如果我們要使用 Session 搭配 ORM 的話,該怎麼做呢?我們先看一下 Django 怎麼做。
Django 這部份主要是在 contrib/auth 裡,主要有幾個部份
了解 Django 怎麼做之後,下一篇我們就來試著實作看看,可能會改動不少程式。