You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
After adding the middleware router.Use(oauth.Authorize("mySecretKey-10101", nil)) and being able to authorize a user, I had some issues figuring out how to access the information of the access token using the Context.
The middleware.go file adds the token information to the Context using a new type that is basically a string. Code in question:
`type contextKey string
Given that the context is accessed using r.Context().Value(key) and that key is basically a string, I thought I had to access the claims just by using r.Context().Value("oauth.claims") but this approach returned nil.
To successfully access the token information in the context I had to import the oauth package and use the consts that I put above since their type is not a string but contextKey. Working Example: r.Context().Value(oauth.ClaimsContext)
I was wondering why this contextKey type is used instead of using a string
The text was updated successfully, but these errors were encountered:
+1 for this as I also had to figure this out myself.
I also want to notice that while the StoreTokenID callback returns what seems to be an UUID that is supposed to be saved to the user, when the middleware validates the token this token ID is nowhere to be found. The only useful information given is the original username, which kind defeats the purpose of saving this ID.
The user data seems to be encoded inside the encrypted token itself (akin to JWT token), making it unecessary to save anything to a database or retrieve a user by token.
After adding the middleware
router.Use(oauth.Authorize("mySecretKey-10101", nil))
and being able to authorize a user, I had some issues figuring out how to access the information of the access token using the Context.The middleware.go file adds the token information to the Context using a new type that is basically a string. Code in question:
`type contextKey string
const (
CredentialContext contextKey = "oauth.credential"
ClaimsContext contextKey = "oauth.claims"
ScopeContext contextKey = "oauth.scope"
TokenTypeContext contextKey = "oauth.tokentype"
AccessTokenContext contextKey = "oauth.accesstoken"
)`
Given that the context is accessed using
r.Context().Value(key)
and that key is basically a string, I thought I had to access the claims just by usingr.Context().Value("oauth.claims")
but this approach returned nil.To successfully access the token information in the context I had to import the oauth package and use the consts that I put above since their type is not a string but contextKey. Working Example:
r.Context().Value(oauth.ClaimsContext)
I was wondering why this contextKey type is used instead of using a string
The text was updated successfully, but these errors were encountered: