Skip to main content

DebugConfig

Struct DebugConfig 

Source
pub struct DebugConfig {
    pub enabled: bool,
    pub debug_header: Option<String>,
    pub debug_token: Option<String>,
    pub allow_unauthenticated: bool,
}
Expand description

Debug configuration for secure debug mode access.

This allows configuring a debug header that must be present with a secret token for debug information to be included in responses.

§Example

use fastapi_core::error::DebugConfig;

// Require X-Debug-Token header with a secret
let config = DebugConfig::new()
    .with_debug_header("X-Debug-Token", "my-secret-token");

// Or allow debug mode without authentication (dangerous!)
let config = DebugConfig::new().allow_unauthenticated();

Fields§

§enabled: bool

Enable debug mode for the application.

§debug_header: Option<String>

Header name for debug token authentication.

§debug_token: Option<String>

Expected token value for debug access.

§allow_unauthenticated: bool

Allow debug mode without authentication (dangerous in production).

Implementations§

Source§

impl DebugConfig

Source

pub fn new() -> Self

Create a new debug configuration with debug mode disabled.

Source

pub fn enable(self) -> Self

Enable debug mode.

Source

pub fn with_debug_header( self, header_name: impl Into<String>, token: impl Into<String>, ) -> Self

Configure the debug header and token for authenticated debug access.

When configured, debug information will only be included in responses if the request includes this header with the expected token value.

Source

pub fn allow_unauthenticated(self) -> Self

Allow debug mode without authentication.

§Warning

This is dangerous in production as it exposes internal details to anyone. Only use for development/testing.

Source

pub fn is_authorized(&self, request_headers: &[(String, Vec<u8>)]) -> bool

Check if a request is authorized for debug mode.

Returns true if:

  • Debug mode is disabled (debug info won’t be shown anyway)
  • allow_unauthenticated is true
  • The request includes the correct debug header/token
§Security

Token comparison uses constant-time comparison to prevent timing attacks.

Trait Implementations§

Source§

impl Clone for DebugConfig

Source§

fn clone(&self) -> DebugConfig

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for DebugConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for DebugConfig

Source§

fn default() -> Self

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

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
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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, _span: NoopSpan) -> Self

Instruments this future with a span (no-op when disabled).
Source§

fn in_current_span(self) -> Self

Instruments this future with the current span (no-op when disabled).
Source§

impl<T> Instrument for T

Source§

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

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

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> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.
Source§

impl<T> WithSubscriber for T

Source§

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
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

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

impl<T> ResponseProduces<T> for T