code: func Authenticate(m ...Method) router.Middleware {
  	a := &Authenticator{Methods: m}
  	return a.GetMiddleware()
  }
docs: // Authenticate returns a middleware that performs authentication.
  //
  // Typically you only one one Method, but you may specify multiple Methods to be
  // tried in order (see Authenticator).
  //
  // This middleware either updates the context by injecting the authentication
  // state into it (enabling functions like CurrentIdentity and IsMember), or
  // aborts the request with an HTTP 401 or HTTP 500 error.
  //
  // Note that it passes through anonymous requests. CurrentIdentity returns
  // identity.AnonymousIdentity in this case. Use separate authorization layer to
  // further restrict the access, if necessary.