#iron #middleware #auth #router #middlefiddle


iron_middlefiddle provides a macro to make route-specific middleware in Iron an easy feat

2 releases

Uses old Rust 2015

0.1.1 Jun 30, 2017
0.1.0 Jun 30, 2017

#26 in #iron

31 downloads per month

MIT license

91 lines

iron_middlefiddle - Route specific middleware made easy

Crates.io Docs License

There are cases where you may only want specific routes within a Router to use some piece of middleware (e.g. routes that require the user to be logged in). Adding route-specific middleware in Iron is a repetitive and messy business which is where iron_middlefiddle comes in. It provides a convenience macro for adding one or more BeforeMiddleware or AfterMiddlewares to multiple routes at once.


If you're using Cargo, just add iron_middlefiddle to your Cargo.toml:

iron-middlefiddle = "0.1.1"

Example usage

extern crate iron_middlefiddle;
extern crate iron;
extern crate mount;
extern crate router;

use iron_middlefiddle::Middleware;
use mount::Mount;
use router::Router;

mod controllers;
mod middleware;

fn main() {
    let mut frontend_router = Router::new();

    // Add some `frontend_router` routes and the middleware they should use:

    middlefiddle! {
        router => frontend_router,
        routes => {
            lorem: get "/lorem" => controllers::lorem::index,
            ipsum: get "/ipsum" => controllers::ipsum::index,
            dolor: get "/dolor" => controllers::dolor::index,
        middleware => {
            Middleware::BeforeMiddleware => middleware::auth::TokenValidity,

    // Add some more `frontend_router` routes that aren't going to need the middleware:

    frontend_router.get("/amet", controllers::amet::index, "amet");

    // The usual…

    let mut mount = Mount::new();
    mount.mount("/", frontend_router)



The documentation for iron_middlefiddle is available on docs.rs.


iron_middlefiddle is released under the MIT LICENSE.

If you require a different license to be able to use this crate, please get in touch.


This crate was written by Elliot Jackson.


~121K SLoC