jwt-go: github.com/dgrijalva/jwt-go/request Index | Examples | Files

package request

import "github.com/dgrijalva/jwt-go/request"

Utility package for extracting JWT tokens from HTTP requests.

The main function is ParseFromRequest and it's WithClaims variant. See examples for how to use the various Extractor implementations or roll your own.



Package Files

doc.go extractor.go oauth2.go request.go


var AuthorizationHeaderExtractor = &PostExtractionFilter{

Extract bearer token from Authorization header Uses PostExtractionFilter to strip "Bearer " prefix from header

var (
    ErrNoTokenInRequest = errors.New("no token present in request")


var OAuth2Extractor = &MultiExtractor{

Extractor for OAuth2 access tokens. Looks in 'Authorization' header then 'access_token' argument for a token.

func ParseFromRequest Uses

func ParseFromRequest(req *http.Request, extractor Extractor, keyFunc jwt.Keyfunc, options ...ParseFromRequestOption) (token *jwt.Token, err error)

Extract and parse a JWT token from an HTTP request. This behaves the same as Parse, but accepts a request and an extractor instead of a token string. The Extractor interface allows you to define the logic for extracting a token. Several useful implementations are provided.

You can provide options to modify parsing behavior

func ParseFromRequestWithClaims Uses

func ParseFromRequestWithClaims(req *http.Request, extractor Extractor, claims jwt.Claims, keyFunc jwt.Keyfunc) (token *jwt.Token, err error)

ParseFromRequest but with custom Claims type DEPRECATED: use ParseFromRequest and the WithClaims option

type ArgumentExtractor Uses

type ArgumentExtractor []string

Extract token from request arguments. This includes a POSTed form or GET URL arguments. Argument names are tried in order until there's a match. This extractor calls `ParseMultipartForm` on the request


req := makeExampleRequest("GET", "/", nil, url.Values{"token": {extractorTestTokenA}})
tokenString, err := ArgumentExtractor{"token"}.ExtractToken(req)
if err == nil {
} else {



func (ArgumentExtractor) ExtractToken Uses

func (e ArgumentExtractor) ExtractToken(req *http.Request) (string, error)

type Extractor Uses

type Extractor interface {
    ExtractToken(*http.Request) (string, error)

Interface for extracting a token from an HTTP request. The ExtractToken method should return a token string or an error. If no token is present, you must return ErrNoTokenInRequest.

type HeaderExtractor Uses

type HeaderExtractor []string

Extractor for finding a token in a header. Looks at each specified header in order until there's a match


req := makeExampleRequest("GET", "/", map[string]string{"Token": exampleTokenA}, nil)
tokenString, err := HeaderExtractor{"Token"}.ExtractToken(req)
if err == nil {
} else {



func (HeaderExtractor) ExtractToken Uses

func (e HeaderExtractor) ExtractToken(req *http.Request) (string, error)

type MultiExtractor Uses

type MultiExtractor []Extractor

Tries Extractors in order until one returns a token string or an error occurs

func (MultiExtractor) ExtractToken Uses

func (e MultiExtractor) ExtractToken(req *http.Request) (string, error)

type ParseFromRequestOption Uses

type ParseFromRequestOption func(*fromRequestParser)

func WithClaims Uses

func WithClaims(claims jwt.Claims) ParseFromRequestOption

Parse with custom claims

func WithParser Uses

func WithParser(parser *jwt.Parser) ParseFromRequestOption

Parse using a custom parser

type PostExtractionFilter Uses

type PostExtractionFilter struct {
    Filter func(string) (string, error)

Wrap an Extractor in this to post-process the value before it's handed off. See AuthorizationHeaderExtractor for an example

func (*PostExtractionFilter) ExtractToken Uses

func (e *PostExtractionFilter) ExtractToken(req *http.Request) (string, error)

Package request imports 4 packages (graph) and is imported by 167 packages. Updated 2020-04-29. Refresh now. Tools for package owners.