pub struct SessionGuard<S: SessionStore> { /* private fields */ }Implementations§
Source§impl<S: SessionStore> SessionGuard<S>
impl<S: SessionStore> SessionGuard<S>
pub fn new(store: S, config: SessionConfig) -> Self
pub fn config(&self) -> &SessionConfig
Sourcepub fn bind(
&self,
ctx: &RequestContext<'_>,
now: u64,
) -> Result<SessionVerdict, SessionError>
pub fn bind( &self, ctx: &RequestContext<'_>, now: u64, ) -> Result<SessionVerdict, SessionError>
登录:建会话 + 绑指纹 + 记位置,并返回异地判定。
登录本身总是成功(除非调用方误用或后端故障)—— 异地只影响 verdict, 由调用方决定是否走二次验证,不应阻断登录。
Sourcepub fn verify(&self, ctx: &RequestContext<'_>, now: u64) -> SessionVerdict
pub fn verify(&self, ctx: &RequestContext<'_>, now: u64) -> SessionVerdict
每请求校验。
返回 SessionVerdict 而非 Result:认证路径上「拒绝」是正常结果而非错误,
强制调用方在类型层面处理每一种拒绝。
Sourcepub fn revoke_all(&self, subject: &str) -> Result<usize, StoreError>
pub fn revoke_all(&self, subject: &str) -> Result<usize, StoreError>
吊销某 subject 的全部会话(改密码 / 踢下线),返回受影响条数。
Sourcepub fn rotate(
&self,
old: &str,
new: &str,
ctx: &RequestContext<'_>,
now: u64,
) -> Result<(), SessionError>
pub fn rotate( &self, old: &str, new: &str, ctx: &RequestContext<'_>, now: u64, ) -> Result<(), SessionError>
续期换 token:旧 token 吊销,新 token 由调用方提供。
旧会话必须存在、未吊销、未过期,且指纹与本次 ctx 相符 —— 否则等于允许攻击者拿别人的 token 换一个自己的新 token,是提权漏洞。
新记录的身份字段(subject / location / coords / signature)一律
以服务端记录为准,不接受 ctx 覆盖。
Auto Trait Implementations§
impl<S> Freeze for SessionGuard<S>where
S: Freeze,
impl<S> RefUnwindSafe for SessionGuard<S>where
S: RefUnwindSafe,
impl<S> Send for SessionGuard<S>
impl<S> Sync for SessionGuard<S>
impl<S> Unpin for SessionGuard<S>where
S: Unpin,
impl<S> UnsafeUnpin for SessionGuard<S>where
S: UnsafeUnpin,
impl<S> UnwindSafe for SessionGuard<S>where
S: UnwindSafe,
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