#[non_exhaustive]pub struct SignedToken<A: Algorithm + ?Sized, T> {
pub signature: A::Signature,
pub token: Token<T>,
}Expand description
Token together with the validated token signature.
§Examples
#[derive(Serialize, Deserialize)]
struct MyClaims {
// Custom claims in the token...
}
let token_string: String = // token from an external source
let token = UntrustedToken::try_from(token_string.as_str())?;
let signed = Hs256.validate_for_signed_token::<MyClaims>(&token, &key)?;
// `signature` is strongly typed.
let array: GenericArray<u8, typenum::U32> = signed.signature.into_bytes();
// Token itself is available via `token` field.
let claims = signed.token.claims();
claims.validate_expiration(TimeOptions::default())?;
// Process the claims...Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.signature: A::SignatureToken signature.
token: Token<T>Verified token.
Trait Implementations§
Source§impl<A, T> Clone for SignedToken<A, T>
impl<A, T> Clone for SignedToken<A, T>
Auto Trait Implementations§
impl<A, T> Freeze for SignedToken<A, T>
impl<A, T> RefUnwindSafe for SignedToken<A, T>
impl<A, T> Send for SignedToken<A, T>
impl<A, T> Sync for SignedToken<A, T>
impl<A, T> Unpin for SignedToken<A, T>
impl<A, T> UnsafeUnpin for SignedToken<A, T>
impl<A, T> UnwindSafe for SignedToken<A, T>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more