|
12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- package mux_test
-
- import (
- "log"
- "net/http"
-
- "github.com/gorilla/mux"
- )
-
- // Define our struct
- type authenticationMiddleware struct {
- tokenUsers map[string]string
- }
-
- // Initialize it somewhere
- func (amw *authenticationMiddleware) Populate() {
- amw.tokenUsers["00000000"] = "user0"
- amw.tokenUsers["aaaaaaaa"] = "userA"
- amw.tokenUsers["05f717e5"] = "randomUser"
- amw.tokenUsers["deadbeef"] = "user0"
- }
-
- // Middleware function, which will be called for each request
- func (amw *authenticationMiddleware) Middleware(next http.Handler) http.Handler {
- return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
- token := r.Header.Get("X-Session-Token")
-
- if user, found := amw.tokenUsers[token]; found {
- // We found the token in our map
- log.Printf("Authenticated user %s\n", user)
- next.ServeHTTP(w, r)
- } else {
- http.Error(w, "Forbidden", http.StatusForbidden)
- }
- })
- }
-
- func Example_authenticationMiddleware() {
- r := mux.NewRouter()
- r.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
- // Do something here
- })
- amw := authenticationMiddleware{make(map[string]string)}
- amw.Populate()
- r.Use(amw.Middleware)
- }
|