如何在我的应用程序中为未经授权的用户重定向或编写内容
如果没有定义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);
我在这个中尝试了一切但没有运气
提前感谢...
答案 0 :(得分: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
});
答案 1 :(得分: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>
然后,如果我们有访问权限,我们会在服务器中发出访问权限,访问被拒绝的文本将更改为授予访问权限