4 个版本

使用旧的 Rust 2015

0.0.4 2016年3月5日
0.0.3 2016年3月5日
0.0.2 2016年3月5日
0.0.1 2016年3月5日

#15 in #session-middleware

MIT 许可协议

10KB
144

Iron网络框架的会话中间件。

使用 Sessions 结构体创建新的会话中间件。

示例

创建和链接会话

#
#
#
    // create the chain that the session middleware will be linked in.
    let mut chain = Chain::new(handler);

    // create the session middleware.
    let store: HashSessionStore<TypeMapSession> = HashSessionStore::new();
    chain.around(Sessions::new(String::from("secret").into_bytes(), store));

在处理程序中访问会话数据

#
// Create a key type that we can associate with a value type.
struct Counter;

// implement the Key trait which associates u64 with Counter
impl Key for Counter { type Value = u64;}

// iron request handler
fn create(req: &mut Request) -> IronResult<Response> {

    // get the TypeMap for our session
    let lock = req.extensions.get::<TypeMapSession>().unwrap();

    // we want to write to the map, so get a write lock on it.
    let mut map = lock.write().unwrap();

    // if there was no counter object in the map, create one
    if let None = map.get::<Counter>() {
        map.insert::<Counter>(0);
    }

    // get a mutable reference to the u64 inside the map
    let mut count = map.get_mut::<Counter>().unwrap();
    *count += 1;

    // create a message with our hitcount and return in in a response
    let message = format!("hit count: {}", count);
    let mut res = Response::new();


    res.set_mut(status::Ok);
    res.set_mut(message);
    Ok(res)
}

依赖项

~6MB
~140K SLoC