從網站的例子:是否可以在vibe.d中全局存儲當前會話信息? (dlang)
import vibe.d;
void login(HTTPServerRequest req, HTTPServerResponse res)
{
enforceHTTP("username" in req.form && "password" in req.form,
HTTPStatus.badRequest, "Missing username/password field.");
// todo: verify user/password here
auto session = res.startSession();
session["username"] = req.form["username"];
session["password"] = req.form["password"];
res.redirect("/home");
}
void logout(HTTPServerRequest req, HTTPServerResponse res)
{
res.terminateSession();
res.redirect("/");
}
void checkLogin(HTTPServerRequest req, HTTPServerResponse res)
{
// force a redirect to/for unauthenticated users
if(req.session is null)
res.redirect("/");
}
shared static this()
{
auto router = new URLRouter;
router.get("/", staticTemplate!"index.dl");
router.post("/login", &login);
router.post("/logout", &logout);
// restrict all following routes to authenticated users:
router.any("*", &checkLogin);
router.get("/home", staticTemplate!"home.dl");
auto settings = new HTTPServerSettings;
settings.sessionStore = new MemorySessionStore;
// ...
}
但可以說,我沒有想通過ServerResponse我的整個程序到每一個功能。例如,如果res.session存儲當前用戶的ID,該怎麼辦?這是經常使用的,所以我不希望這通過每個函數。我如何在全球存儲此會話信息?假設有多個用戶在使用該網站。
Khm ...也許我們需要振動標籤:) – DejanLekic
我知道!我嘗試回答一些其他問題,以獲得所需的聲譽。不是一個大回信,所以如果你想這樣做,我會很感激它:) – carboncomputed
我會嘗試添加它,但我認爲我的代表還不夠高... –