0

アプリケーションで許可されていないユーザーのために何かをリダイレクトまたは書き込むにはどうすればよいですか

Cookieが定義されていないか、Cookieの値がnullの場合、ページをリダイレクトしたい

これが私のスクリプトで、私が思うところを指定しました。何かを追加する必要があります。

    var express = require('express'),
        app = express(),
        memcache = require("memcache"),
        http = require('http'),
        server = http.createServer(app),
        io = require('socket.io').listen(server),
        co = require("./cookie.js"),
        codein = require("node-codein");

    //check if user loggedin
    // routing
    app.get('/', function (req, res) {
      res.sendfile(__dirname + '/index.html');
    });





    io.configure(function (){
              io.set('authorization', function (data, accept) {
                    var cookieManager = new co.cookie(data.headers.cookie);

                    var client = new memcache.Client(11211, "localhost");
                    client.connect();

                    client.get("sessions/"+cookieManager.get("sec_session_id"), function(error, result){
                        if(result){
                            var session = JSON.parse(result);
                            user = JSON.parse(session.name);
                            user = user.username;
                        }

                  if (typeof result === 'undefined' || (!result)) {
//------------> here if no cookie redirect to noaccess.html or just write you have no access to this page
                    return accept('No cookie transmitted.', false);

                  } else {
//------------> here if there is cookie then let users to see index.html
                    data.sessionID = cookieManager.get("sec_session_id");
                    accept('cookie recieved', true);
                  } 


                io.on('connection', function(socket) {
                //console.log(socket.handshake.sessionID);
                });

            });
                });
        });




    server.listen(3000);

私はすべてを試しましたが、これでは運がありません

前もって感謝します...

4

2 に答える 2

0

私の場合、アクセスが許可されている場合は発行する必要があると思います。サーバー側にこれがあります

io.on('connection', function(socket) {
            //console.log(socket.handshake.sessionID);
            socket.emit('access', 'access granted');
            });
    });

クライアントにはこのフォームがあります

<html>
  <head>
    <title> Tying it all together demo</title>
    <script src='/socket.io/socket.io.js'></script>
    <script src='http://code.jquery.com/jquery-latest.js'></script>
    </head>
  <body>
    <p id="text">access denied</p>
    <script>
        var socket = io.connect('http://localhost:3000/');
        socket.on('access', function (data) {
            $("#text").html(data);
        });

    </script>
</body>

次に、アクセス権がある場合、サーバーでアクセス機能を発行し、アクセスが拒否されたテキストがアクセス許可に変更されます

于 2013-01-21T06:12:11.247 に答える
0

ユーザーをリダイレクトすることを考えると、応答オブジェクトにアクセスできるようになったため、 app.get コールバック内で Cookie を確認する方が理にかなっています。

すべてのリクエストをインターセプトしたい場合は、コードに次のようなブロックを追加するだけです:

app.get("/*", function(req, res, next){

    if(req.cookies){ // or req.cookies['cookiename'] if you want a specific one
        res.render("index.html");
    }   

    else{
        res.render("noaccess.html");
    }
    //You can optionally put next() here, depending on your code
});
于 2013-01-20T21:24:05.440 に答える