Seen your code.
Use clientHandler(handler.go) to wrap the real user's handler.
But the problem is beego already wrap http.Handler, user no need to create own handler, just Controller + Router will work fine.
So i create a beego_helpers.go in the project to do some tricky thing. I am an new goer, I think you can come out a better solution.
beego is a web framework. beego.me
package cas
import (
"net/http"
"github.com/golang/glog"
)
type BeegoCASData struct {
userName string
}
func (bcd *BeegoCASData) GetUserName() string {
return bcd.userName
}
func ServeBeego(w http.ResponseWriter, r *http.Request, c *Client) *BeegoCASData {
if glog.V(2) {
glog.Infof("cas: handling %v request for %v", r.Method, r.URL)
}
setClient(r, c)
defer clear(r)
c.getSession(w, r)
if !IsAuthenticated(r) {
RedirectToLogin(w, r)
return nil
}
if r.URL.Path == "/logout" {
RedirectToLogout(w, r)
return nil
}
return &BeegoCASData{
userName: Username(r),
}
}