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