You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
25 lines
926 B
25 lines
926 B
9 years ago
|
package request
|
||
|
|
||
|
import (
|
||
|
"github.com/dgrijalva/jwt-go"
|
||
|
"net/http"
|
||
|
)
|
||
|
|
||
|
// 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.
|
||
|
func ParseFromRequest(req *http.Request, extractor Extractor, keyFunc jwt.Keyfunc) (token *jwt.Token, err error) {
|
||
|
return ParseFromRequestWithClaims(req, extractor, jwt.MapClaims{}, keyFunc)
|
||
|
}
|
||
|
|
||
|
// ParseFromRequest but with custom Claims type
|
||
|
func ParseFromRequestWithClaims(req *http.Request, extractor Extractor, claims jwt.Claims, keyFunc jwt.Keyfunc) (token *jwt.Token, err error) {
|
||
|
// Extract token from request
|
||
|
if tokStr, err := extractor.ExtractToken(req); err == nil {
|
||
|
return jwt.ParseWithClaims(tokStr, claims, keyFunc)
|
||
|
} else {
|
||
|
return nil, err
|
||
|
}
|
||
|
}
|