#[non_exhaustive]pub struct Baseline {
pub fingerprint: Fingerprint,
pub previous_ip_prefix: Option<String>,
pub ip_changed_at: Option<DateTime<Utc>>,
}Expand description
What a session is compared against.
Hard identity (browser family, OS, client hints) is fixed at login or step-up. Soft signals (network, country, ASN, anonymity, languages, TLS fingerprint, browser version) follow the client as trusted requests come in.
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.fingerprint: FingerprintThe reference fingerprint.
previous_ip_prefix: Option<String>The network the client was on before the last move.
ip_changed_at: Option<DateTime<Utc>>When the client last moved network.
Implementations§
Source§impl Baseline
impl Baseline
Sourcepub fn new(fingerprint: Fingerprint) -> Self
pub fn new(fingerprint: Fingerprint) -> Self
A fresh baseline, as set at login and after a completed step-up.
Sourcepub fn absorb(
&mut self,
current: &Fingerprint,
now: DateTime<Utc>,
checks: &Checks,
) -> bool
pub fn absorb( &mut self, current: &Fingerprint, now: DateTime<Utc>, checks: &Checks, ) -> bool
Learns soft signals from a request that was let through. Only signals that checks
scored are learned, so a route with looser checks cannot slip a change past stricter
ones. Hard identity is never learned and missing values never erase known ones. Returns
whether anything changed.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Baseline
impl<'de> Deserialize<'de> for Baseline
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
impl Eq for Baseline
impl StructuralPartialEq for Baseline
Auto Trait Implementations§
impl Freeze for Baseline
impl RefUnwindSafe for Baseline
impl Send for Baseline
impl Sync for Baseline
impl Unpin for Baseline
impl UnsafeUnpin for Baseline
impl UnwindSafe for Baseline
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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