DMSCJWTRevocationList

Struct DMSCJWTRevocationList 

Source
pub struct DMSCJWTRevocationList { /* private fields */ }
Expand description

JWT token revocation list for managing invalidated tokens.

This struct provides functionality to revoke JWT tokens and check if tokens have been revoked. It uses concurrent data structures for thread-safe access.

§Usage

The revocation list can be used to implement token invalidation scenarios:

  • User logout (revoke specific token)
  • Password change (revoke all user tokens)
  • Security incidents (bulk revocation)

§Storage

By default, revoked tokens are stored in-memory. For production use, consider integrating with Redis or a database-backed storage solution to persist revocations across application restarts.

Implementations§

Source§

impl DMSCJWTRevocationList

Source

pub fn new() -> Self

Creates a new JWT revocation list with default capacity.

This constructor initializes an empty revocation list with the default maximum capacity for storing revoked tokens.

§Returns

A new instance of DMSCJWTRevocationList

Source

pub fn with_capacity(capacity: usize) -> Self

Creates a new JWT revocation list with specified capacity.

This constructor allows specifying the maximum number of revoked tokens that can be stored. When the capacity is exceeded, oldest revoked tokens are automatically removed.

§Parameters
  • capacity: Maximum number of revoked tokens to store
§Returns

A new instance of DMSCJWTRevocationList with specified capacity

Source§

impl DMSCJWTRevocationList

Source

pub fn revoke_token( &self, token: &str, user_id: &str, reason: Option<String>, ttl_secs: u64, )

Revokes a specific JWT token.

This method adds a token to the revocation list with associated metadata. The token will be considered invalid for the specified time-to-live duration.

§Automatic Cleanup

After revocation, expired tokens are automatically cleaned up if the revocation list exceeds its maximum capacity.

§Parameters
  • token: The JWT token string to revoke
  • user_id: The user ID associated with the token
  • reason: Optional reason for revocation
  • ttl_secs: Time-to-live in seconds for this revocation record
Source

pub fn revoke_all_user_tokens( &self, user_id: &str, reason: Option<String>, ) -> usize

Revokes all tokens for a specific user.

This method finds all tokens associated with the given user ID and marks them as revoked. Useful for implementing “logout everywhere” functionality or revoking tokens after a security incident.

§Parameters
  • user_id: The user ID whose tokens should be revoked
  • reason: Optional reason for the mass revocation
§Returns

The number of tokens that were revoked

Source

pub fn is_revoked(&self, token: &str) -> bool

Checks if a token has been revoked.

This method performs an O(1) lookup to determine if a token exists in the revocation list. If found, it also checks if the revocation record has expired and removes it if so.

§Expiration Handling

If the token is found but its revocation record has expired, the token is automatically removed and treated as not revoked.

§Parameters
  • token: The JWT token string to check
§Returns

true if the token is revoked and valid, false otherwise

Source

pub fn get_revocation_info(&self, token: &str) -> Option<DMSCRevokedTokenInfo>

Retrieves revocation information for a specific token.

This method returns the metadata associated with a revoked token, including when it was revoked and the reason (if provided).

§Parameters
  • token: The JWT token string to look up
§Returns

Some(DMSCRevokedTokenInfo) if the token is revoked, None otherwise

Source

pub fn get_revoked_count(&self) -> usize

Returns the current count of revoked tokens.

This method provides the number of tokens currently in the revocation list.

§Returns

The number of revoked tokens stored

Source

pub fn clear(&self)

Clears all revoked tokens from the list.

This method removes all entries from both the revoked tokens set and the token info map. Use with caution as it cannot be undone.

Trait Implementations§

Source§

impl Default for DMSCJWTRevocationList

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<'py> IntoPyObject<'py> for DMSCJWTRevocationList

Source§

type Target = DMSCJWTRevocationList

The Python output type
Source§

type Output = Bound<'py, <DMSCJWTRevocationList as IntoPyObject<'py>>::Target>

The smart pointer type to use. Read more
Source§

type Error = PyErr

The type returned in the event of a conversion error.
Source§

fn into_pyobject( self, py: Python<'py>, ) -> Result<<Self as IntoPyObject<'_>>::Output, <Self as IntoPyObject<'_>>::Error>

Performs the conversion.
Source§

impl PyClass for DMSCJWTRevocationList

Source§

type Frozen = False

Whether the pyclass is frozen. Read more
Source§

impl PyClassImpl for DMSCJWTRevocationList

Source§

const IS_BASETYPE: bool = false

#[pyclass(subclass)]
Source§

const IS_SUBCLASS: bool = false

#[pyclass(extends=…)]
Source§

const IS_MAPPING: bool = false

#[pyclass(mapping)]
Source§

const IS_SEQUENCE: bool = false

#[pyclass(sequence)]
Source§

const IS_IMMUTABLE_TYPE: bool = false

#[pyclass(immutable_type)]
Source§

const RAW_DOC: &'static CStr = /// to persist revocations across application restarts.

Docstring for the class provided on the struct or enum. Read more
Source§

const DOC: &'static CStr

Fully rendered class doc, including the text_signature if a constructor is defined. Read more
Source§

type BaseType = PyAny

Base class
Source§

type ThreadChecker = SendablePyClass<DMSCJWTRevocationList>

This handles following two situations: Read more
Source§

type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::MutableChild

Immutable or mutable
Source§

type Dict = PyClassDummySlot

Specify this class has #[pyclass(dict)] or not.
Source§

type WeakRef = PyClassDummySlot

Specify this class has #[pyclass(weakref)] or not.
Source§

type BaseNativeType = PyAny

The closest native ancestor. This is PyAny by default, and when you declare #[pyclass(extends=PyDict)], it’s PyDict.
Source§

fn items_iter() -> PyClassItemsIter

Source§

fn lazy_type_object() -> &'static LazyTypeObject<Self>

§

fn dict_offset() -> Option<isize>

§

fn weaklist_offset() -> Option<isize>

Source§

impl PyClassNewTextSignature for DMSCJWTRevocationList

Source§

const TEXT_SIGNATURE: &'static str = "()"

Source§

impl PyMethods<DMSCJWTRevocationList> for PyClassImplCollector<DMSCJWTRevocationList>

Source§

fn py_methods(self) -> &'static PyClassItems

Source§

impl PyTypeInfo for DMSCJWTRevocationList

Source§

const NAME: &'static str = "DMSCJWTRevocationList"

Class name.
Source§

const MODULE: Option<&'static str> = ::core::option::Option::None

Module name, if any.
Source§

fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject

Returns the PyTypeObject instance for this type.
§

fn type_object(py: Python<'_>) -> Bound<'_, PyType>

Returns the safe abstraction over the type object.
§

fn is_type_of(object: &Bound<'_, PyAny>) -> bool

Checks if object is an instance of this type or a subclass of this type.
§

fn is_exact_type_of(object: &Bound<'_, PyAny>) -> bool

Checks if object is an instance of this type.
Source§

impl DerefToPyAny for DMSCJWTRevocationList

Source§

impl ExtractPyClassWithClone for DMSCJWTRevocationList

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<'py, T> IntoPyObjectExt<'py> for T
where T: IntoPyObject<'py>,

§

fn into_bound_py_any(self, py: Python<'py>) -> Result<Bound<'py, PyAny>, PyErr>

Converts self into an owned Python object, dropping type information.
§

fn into_py_any(self, py: Python<'py>) -> Result<Py<PyAny>, PyErr>

Converts self into an owned Python object, dropping type information and unbinding it from the 'py lifetime.
§

fn into_pyobject_or_pyerr(self, py: Python<'py>) -> Result<Self::Output, PyErr>

Converts self into a Python object. Read more
Source§

impl<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<T> PyErrArguments for T
where T: for<'py> IntoPyObject<'py> + Send + Sync,

§

fn arguments(self, py: Python<'_>) -> Py<PyAny>

Arguments for exception
§

impl<T> PyTypeCheck for T
where T: PyTypeInfo,

§

const NAME: &'static str = T::NAME

👎Deprecated since 0.27.0: Use ::classinfo_object() instead and format the type name at runtime. Note that using built-in cast features is often better than manual PyTypeCheck usage.
Name of self. This is used in error messages, for example.
§

fn type_check(object: &Bound<'_, PyAny>) -> bool

Checks if object is an instance of Self, which may include a subtype. Read more
§

fn classinfo_object(py: Python<'_>) -> Bound<'_, PyAny>

Returns the expected type as a possible argument for the isinstance and issubclass function. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<T> Ungil for T
where T: Send,