Skip to main content

SecurityContext

Struct SecurityContext 

Source
pub struct SecurityContext;
Expand description

Holder for the current security context.

§Spring Security Equivalent

SecurityContextHolder

Provides static methods to access the current authenticated user from anywhere in the application.

Implementations§

Source§

impl SecurityContext

Source

pub fn get_user() -> Option<User>

Gets the current authenticated user.

§Spring Security Equivalent
SecurityContextHolder.getContext().getAuthentication().getPrincipal()
§Returns
  • Some(User) if a user is authenticated in the current context
  • None if no user is authenticated
§Example
use actix_security_core::http::security::context::SecurityContext;

if let Some(user) = SecurityContext::get_user() {
    println!("Current user: {}", user.get_username());
}
Source

pub fn get_username() -> Option<String>

Gets the current username if authenticated.

§Example
let username = SecurityContext::get_username();
Source

pub fn is_authenticated() -> bool

Checks if the current user is authenticated.

§Spring Security Equivalent

SecurityContextHolder.getContext().getAuthentication().isAuthenticated()

Source

pub fn has_role(role: &str) -> bool

Checks if the current user has the specified role.

§Example
if SecurityContext::has_role("ADMIN") {
    // Admin-only logic
}
Source

pub fn has_any_role(roles: &[&str]) -> bool

Checks if the current user has any of the specified roles.

Source

pub fn has_authority(authority: &str) -> bool

Checks if the current user has the specified authority.

§Example
if SecurityContext::has_authority("users:write") {
    // Write access logic
}
Source

pub fn has_any_authority(authorities: &[&str]) -> bool

Checks if the current user has any of the specified authorities.

Source

pub async fn run_with<F, R>(user: Option<User>, f: F) -> R
where F: Future<Output = R>,

Runs a closure with the given user set in the security context.

§Spring Security Equivalent

SecurityContextHolder.setContext(context)

This is primarily used internally by the security middleware.

§Example
let user = User::new("admin".into(), "password".into());

SecurityContext::run_with(Some(user), async {
    // Code here can access SecurityContext::get_user()
    let username = SecurityContext::get_username();
}).await;
Source

pub fn set_user(user: Option<User>)

Sets the user in the current security context.

§Warning

This should only be called from within a run_with scope. Calling it outside a scope will have no effect.

Source

pub fn clear()

Clears the security context.

§Spring Security Equivalent

SecurityContextHolder.clearContext()

Auto Trait Implementations§

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.

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

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> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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

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

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

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

Source§

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

Source§

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

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

Source§

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