Crates.io | basic-auth-raw |
lib.rs | basic-auth-raw |
version | 0.1.0 |
source | src |
created_at | 2018-05-16 09:41:25.401276 |
updated_at | 2018-05-16 09:41:25.401276 |
description | A library to provide a base for Basic Authentication for use in Rocket |
homepage | https://github.com/csharad/basic-auth-raw |
repository | https://github.com/csharad/basic-auth-raw |
max_upload_size | |
id | 65662 |
size | 6,650 |
A Rocket library to provide a base for Basic Authentication over which a concrete authentication mechanism can be built.
This library exports BasicAuthRaw
which you could directly use on the request handler.
use basic_auth_raw::BasicAuthRaw;
#[get("/secure-path")
fn secret(basic: BasicAuthRaw) -> String {
format!("Your username is {}", basic.username);
}
Or you could build Request Guards on top of it (Recommended).
use basic_auth_raw::BasicAuthRaw;
struct Admin(User);
impl<'a, 'r> FromRequest<'a, 'r> for Admin {
type Error = ();
fn from_request(request: &Request) -> Outcome<Self, Self::Error> {
let basic = BasicAuthRaw::from_request(request)?;
let user = User::from_db(basic.username, basic.password);
if user.is_admin {
Outcome::Success(user);
} else {
Outcome::Failure((Status::Unauthorized, ()));
}
}
}
#[get("/secure-path")
fn secret(admin: Admin) -> String {
format!("Your username is {}", admin.user.username);
}