# Struct actix_session::Session

source · [−]

    pub struct Session(_);

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

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(
&self,
key: impl Into<String>,
value: impl Serialize
) -> Result<(), Error>

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

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,

const: unstable · source

#### fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more

source

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

const: unstable · source

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

Mutably borrows from an owned value. Read more

source

### impl<T> From<T> for T

const: unstable · source

#### fn from(t: T) -> T

Returns the argument unchanged.

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

const: unstable · 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<T> for T

#### type Output = T

Should always be `Self`

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.

const: unstable · 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.

const: unstable · 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

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