2

Cookie を作成するのを手伝ってもらえますか。うまくいきません。ユーザーがログインした後に Cookie を設定して作成したいのですが、コードの何が問題なのかわかりません。みんなありがとう。

これが私のコードです。他のエラーやコード修正があると思われる場合は、修正を手伝ってもらえますか? みんなありがとう。:)

app.js

//deps

var express = require('express');
var app = express();
var redis = require('redis');
var client = redis.createClient();


var delcookie = function(req, res) { res.clearCookie('login_token'); res.redirect('/');     };
var setcookie = function(req, res) { res.cookie('login_token', +new Date(), { maxAge: 3600000, path: '/' }); res.redirect('/'); };

//configs
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(app.router);

client.on('error', function (err) {
console.log('Error: ' + client.host + ':' + client.port + ' - ' + err);
});

app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});

app.get('/login/', function (req, res) {
res.sendfile(__dirname + '/login.html');
});

app.get('/register/', function (req, res) {
res.sendfile(__dirname + '/register.html');
});

app.get('/restricted/', function (req, res) {
res.sendfile(__dirname + '/restricted.html');
});

app.get('/logout/', delcookie, function (req, res) {
res.sendfile(__dirname + '/logout.html');
});

//post

app.post('/login/', function (req, res) {
//res.sendfile(__dirname + '/restricted.html');
client.hmget( req.body.user.username, 'password', function (err,pass) {
if ( (!err) && pass && pass == req.body.user.password ){
    res.redirect('/restricted/', setcookie);
    }   else if ( pass == false)   {
    res.redirect('/register/');
    }   else    {
    res.redirect('/login/');
    }
    });
});

app.post('/register/', function (req, res) {    
client.hmset(req.body.user.username, 'password',req.body.user.password, 
'fname',req.body.user.fname, 'lname', req.body.user.lname, 
'password', req.body.user.password, 'email', req.body.user.email,
'mobile', req.body.user.mobile, redis.print);
res.write('Successfully Registered');
});

app.listen(80);
4

1 に答える 1

1

Cookie を使用するには、ExpresscookieSessionミドルウェアを確認する必要があります。ドキュメントはこちら: http://expressjs.com/api.html#cookieSession

更新(今はテストできないので、これは私が覚えていることからのものです):

cookieSession ミドルウェアを追加して、次のような方法で Cookie の設定を指定できます。

app.use(express.cookieSession({
    cookie: {
        path: '/',
        maxAge: 3600000
    }
}));

次に、ユーザーがログインするときに、セッションにログイン トークンを設定できますreq.session.login_token = 'login_token';

また、ユーザーがログアウトすると、 を実行してセッションをクリアできますreq.session = null;

認証ミドルウェアでは、ログイン トークンがセッションに設定されていることを確認して、ユーザーが認証されているかどうかを確認できます。

于 2013-08-29T11:50:03.567 に答える