CookieSession

Struct CookieSession 

Source
pub struct CookieSession(/* private fields */);
Expand description

Use cookies for session storage.

CookieSession creates sessions which are limited to storing fewer than 4000 bytes of data (as the payload must fit into a single cookie). An Internal Server Error is generated if the session contains more than 4000 bytes.

A cookie may have a security policy of signed or private. Each has a respective CookieSessionBackend constructor.

A signed cookie is stored on the client as plaintext alongside a signature such that the cookie may be viewed but not modified by the client.

A private cookie is stored on the client as encrypted text such that it may neither be viewed nor modified by the client.

The constructors take a key as an argument. This is the private key for cookie session - when this value is changed, all session data is lost. The constructors will panic if the key is less than 32 bytes in length.

The backend relies on cookie crate to create and read cookies. By default all cookies are percent encoded, but certain symbols may cause troubles when reading cookie, if they are not properly percent encoded.

§Example

use ntex_session::CookieSession;
use ntex::web::{self, App, HttpResponse, HttpServer};

let app = App::new().wrap(
    CookieSession::signed(&[0; 32])
        .domain("www.rust-lang.org")
        .name("ntex-session")
        .path("/")
        .secure(true))
    .service(web::resource("/").to(|| async { HttpResponse::Ok() }));

Implementations§

Source§

impl CookieSession

Source

pub fn signed(key: &[u8]) -> Self

Construct new signed CookieSessionBackend instance.

Panics if key length is less than 32 bytes.

Source

pub fn private(key: &[u8]) -> Self

Construct new private CookieSessionBackend instance.

Panics if key length is less than 32 bytes.

Source

pub fn path<S: Into<String>>(self, value: S) -> Self

Sets the path field in the session cookie being built.

Source

pub fn name<S: Into<String>>(self, value: S) -> Self

Sets the name field in the session cookie being built.

Source

pub fn domain<S: Into<String>>(self, value: S) -> Self

Sets the domain field in the session cookie being built.

Source

pub fn secure(self, value: bool) -> Self

Sets the secure field in the session cookie being built.

If the secure field is set, a cookie will only be transmitted when the connection is secure - i.e. https

Source

pub fn http_only(self, value: bool) -> Self

Sets the http_only field in the session cookie being built.

Source

pub fn same_site(self, value: SameSite) -> Self

Sets the same_site field in the session cookie being built.

Source

pub fn max_age(self, seconds: i64) -> Self

Sets the max-age field in the session cookie being built.

Source

pub fn max_age_time(self, value: Duration) -> Self

Sets the max-age field in the session cookie being built.

Source

pub fn expires_in(self, seconds: i64) -> Self

Sets the expires field in the session cookie being built.

Source

pub fn expires_in_time(self, value: Duration) -> Self

Sets the expires field in the session cookie being built.

Trait Implementations§

Source§

impl<S, C> Middleware<S, C> for CookieSession

Source§

type Service = CookieSessionMiddleware<S>

The middleware Service value created by this factory
Source§

fn create(&self, service: S, _: C) -> Self::Service

Creates and returns a new middleware Service

Auto Trait Implementations§

Blanket Implementations§

§

impl<T> Any for T
where T: 'static + ?Sized,

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> Borrow<T> for T
where T: ?Sized,

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

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

§

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

Mutably borrows from an owned value. Read more
§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T, U> Into<U> for T
where U: From<T>,

§

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
§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
§

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

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V