# Struct actix_session::Session

source ·

    pub struct Session(/* private fields */);

Expand description

The primary interface to access and modify session state.

`Session` is an extractor—you can specify it as an input type for your request handlers and it will be automatically extracted from the incoming request.

    use actix_session::Session;

    async fn index(session: Session) -> actix_web::Result<&'static str> {
        // access session data
        if let Some(count) = session.get::<i32>("counter")? {
            session.insert("counter", count + 1)?;
        } else {
            session.insert("counter", 1)?;
        }

        Ok("Welcome!")
    }

You can also retrieve a `Session` object from an `HttpRequest` or a `ServiceRequest` using `SessionExt`.

## Implementations§

source §

### impl Session

source

#### pub fn get<T: DeserializeOwned>( &self, key: &str ) -> Result<Option<T>, SessionGetError>

Get a `value` from the session.

It returns an error if it fails to deserialize as `T` the JSON value associated with `key`.

source

#### pub fn entries(&self) -> Ref<'_, HashMap<String, String>>

Get all raw key-value data from the session.

Note that values are JSON encoded.

source

#### pub fn status(&self) -> SessionStatus

Returns session status.

source

#### pub fn insert<T: Serialize>( &self, key: impl Into<String>, value: T ) -> Result<(), SessionInsertError>

Inserts a key-value pair into the session.

Any serializable value can be used and will be encoded as JSON in session data, hence why only a reference to the value is taken.

It returns an error if it fails to serialize `value` to JSON.

source

#### pub fn remove(&self, key: &str) -> Option<String>

Remove value from the session.

If present, the JSON encoded value is returned.

source

#### pub fn remove_as<T: DeserializeOwned>( &self, key: &str ) -> Option<Result<T, String>>

Remove value from the session and deserialize.

Returns `None` if key was not present in session. Returns `T` if deserialization succeeds, otherwise returns un-deserialized JSON string.

source

#### pub fn clear(&self)

Clear the session.

source

#### pub fn purge(&self)

Removes session both client and server side.

source

#### pub fn renew(&self)

Renews the session key, assigning existing session state to new key.

## Trait Implementations§

source §

### impl Clone for Session

source §

#### fn clone(&self) -> Session

Returns a copy 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 FromRequest for Session

Extractor implementation for `Session`s.

#### §Examples

    use actix_session::Session;

    #[get("/")]
    async fn index(session: Session) -> Result<impl Responder> {
        // access session data
        if let Some(count) = session.get::<i32>("counter")? {
            session.insert("counter", count + 1)?;
        } else {
            session.insert("counter", 1)?;
        }

        let count = session.get::<i32>("counter")?.unwrap();
        Ok(format!("Counter: {}", count))
    }

§

#### type Error = Error

The associated error which can be returned.
§

#### type Future = Ready<Result<Session, Error>>

Future that resolves to a `Self`. Read more
source §

#### fn from_request(req: &HttpRequest, _: &mut Payload) -> Self::Future

Create a `Self` from request parts asynchronously.
§

#### fn extract(req: &HttpRequest) -> Self::Future

Create a `Self` from request head asynchronously. Read more

## Auto Trait Implementations§

§

### impl !RefUnwindSafe for Session

§

### impl !Send for Session

§

### impl !Sync for Session

§

### impl Unpin for Session

§

### impl !UnwindSafe for Session

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

§

#### type Output = T

Should always be `Self`
source §

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

§

#### 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>,

§

#### 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>,

§

#### 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