bool TSessionCookieStore::store(TSession &session)
{
    if (session.isEmpty())
        return true;

    QByteArray ba;
    QDataStream ds(&ba, QIODevice::WriteOnly);
    ds << *static_cast<const QVariantHash *>(&session);
    QByteArray digest = QCryptographicHash::hash(ba + Tf::app()->appSettings().value("Session.Secret").toByteArray(),
                                                 QCryptographicHash::Sha1);
    session.sessionId = ba.toHex() + "_" + digest.toHex();
    return true;
}