...
Source file
src/github.com/gorilla/mux/example_authentication_middleware_test.go
1 package mux_test
2
3 import (
4 "log"
5 "net/http"
6
7 "github.com/gorilla/mux"
8 )
9
10
11 type authenticationMiddleware struct {
12 tokenUsers map[string]string
13 }
14
15
16 func (amw *authenticationMiddleware) Populate() {
17 amw.tokenUsers["00000000"] = "user0"
18 amw.tokenUsers["aaaaaaaa"] = "userA"
19 amw.tokenUsers["05f717e5"] = "randomUser"
20 amw.tokenUsers["deadbeef"] = "user0"
21 }
22
23
24 func (amw *authenticationMiddleware) Middleware(next http.Handler) http.Handler {
25 return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
26 token := r.Header.Get("X-Session-Token")
27
28 if user, found := amw.tokenUsers[token]; found {
29
30 log.Printf("Authenticated user %s\n", user)
31 next.ServeHTTP(w, r)
32 } else {
33 http.Error(w, "Forbidden", http.StatusForbidden)
34 }
35 })
36 }
37
38 func Example_authenticationMiddleware() {
39 r := mux.NewRouter()
40 r.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
41
42 })
43 amw := authenticationMiddleware{make(map[string]string)}
44 amw.Populate()
45 r.Use(amw.Middleware)
46 }
47
View as plain text