最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

登录页面重定向

IT培训 admin 17浏览 0评论

登录页面重定向

我有一个基本的HTML登录页面,其中用javascript处理用户名和密码字段,并将输入发送回我的Node API以进行完全AD身份验证。在前端,我正在使用本地存储来捕获用户名值。现在,我还有4个HTML模块,只有在身份验证成功的情况下才可以访问。在Node应用程序中运行的身份验证部分运行正常。但是,我不为登录用户处理会话。而且,如果登录失败或用户注销时,我想使所有4个HTML模块都无法访问(只需使用"localStorage.clear()")。如何通过仅使用HTML和Vanilla JS处理可访问性部分?

login.js

var express     = require('express');      
var app         = express();                
var bodyParser  = require('body-parser');
var router      = express.Router();  
var cors        = require('cors');
var ActiveDirectory = require('activedirectory');



app.use( bodyParser.json() );       
app.use(bodyParser.urlencoded({     
  extended: true
})); 


var port = process.env.PORT || 8080; 
app.use(cors());
app.use('/api', router);

router.post('/Login1', function(req, res) 
{
    var username = req.body.username;
    var password = req.body.password;

    console.log(username);


    var config = {
        url: 'abcdefgh',
        baseDN: 'dc=abcdef,dc=abc'
    };
    var ad = new ActiveDirectory(config);
    // Authenticate
    ad.authenticate(username, password, function(err, auth) {
        if (err) {
            res.send("Login Failed. Incorrect username or password");
            console.log('ERROR: '+JSON.stringify(err));
            return;
        }
        if (auth) {
            console.log('Authenticated!');
            res.redirect('http://127.0.0.1:5500/test.html');
        }
        else {
            console.log('Authentication failed!');
            res.send("Login Failed. Incorrect username or password");
        }
    });
});

app.listen(port);
console.log('Listening at port ' + port);
回答如下:

我想我知道问题出在哪里。核心模块只是为您处理每个请求,因此,如果找到了匹配的html文件,则每个http请求都会首先在核心中间件中查找。您需要放置

app.use(cors());

定义了路由并定义了通往test.html的自定义路由(相关部分在下面标记):

var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var router = express.Router();
var cors = require('cors');
var ActiveDirectory = require('activedirectory');

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
    extended: true
}));

var port = process.env.PORT || 8080;

//use routes on the localhost:8080 path
app.use('/', router);

router.post('/api/Login1', function(req, res) {
    var username = req.body.username;
    var password = req.body.password;

    console.log(username);


    var config = {
        url: 'abcdefgh',
        baseDN: 'dc=abcdef,dc=abc'
    };
    var ad = new ActiveDirectory(config);
    // Authenticate
    ad.authenticate(username, password, function(err, auth) {
        if (err) {
            res.send("Login Failed. Incorrect username or password");
            console.log('ERROR: ' + JSON.stringify(err));
            return;
        }
        if (auth) {
            console.log('Authenticated!');
            res.redirect('/test.html');
        } else {
            console.log('Authentication failed!');
            res.send("Login Failed. Incorrect username or password");
        }
    });
});

/*------------------------------------------------------------------------------*/
//Relevant part:
router.get('/test.html', function(req, res) {
    if (loggedin) //check if user is loggedin, replace with your variables/checks
        res.sendFile('path/to/your/test.html');
    else
        res.redirect('/Login1'); //redirect somewhere
})

//This needs to be after the routes
app.use(cors());

/*---------------------------------------------------------------------------------*/

app.listen(port);
console.log('Listening at port ' + port);

登录页面重定向

我有一个基本的HTML登录页面,其中用javascript处理用户名和密码字段,并将输入发送回我的Node API以进行完全AD身份验证。在前端,我正在使用本地存储来捕获用户名值。现在,我还有4个HTML模块,只有在身份验证成功的情况下才可以访问。在Node应用程序中运行的身份验证部分运行正常。但是,我不为登录用户处理会话。而且,如果登录失败或用户注销时,我想使所有4个HTML模块都无法访问(只需使用"localStorage.clear()")。如何通过仅使用HTML和Vanilla JS处理可访问性部分?

login.js

var express     = require('express');      
var app         = express();                
var bodyParser  = require('body-parser');
var router      = express.Router();  
var cors        = require('cors');
var ActiveDirectory = require('activedirectory');



app.use( bodyParser.json() );       
app.use(bodyParser.urlencoded({     
  extended: true
})); 


var port = process.env.PORT || 8080; 
app.use(cors());
app.use('/api', router);

router.post('/Login1', function(req, res) 
{
    var username = req.body.username;
    var password = req.body.password;

    console.log(username);


    var config = {
        url: 'abcdefgh',
        baseDN: 'dc=abcdef,dc=abc'
    };
    var ad = new ActiveDirectory(config);
    // Authenticate
    ad.authenticate(username, password, function(err, auth) {
        if (err) {
            res.send("Login Failed. Incorrect username or password");
            console.log('ERROR: '+JSON.stringify(err));
            return;
        }
        if (auth) {
            console.log('Authenticated!');
            res.redirect('http://127.0.0.1:5500/test.html');
        }
        else {
            console.log('Authentication failed!');
            res.send("Login Failed. Incorrect username or password");
        }
    });
});

app.listen(port);
console.log('Listening at port ' + port);
回答如下:

我想我知道问题出在哪里。核心模块只是为您处理每个请求,因此,如果找到了匹配的html文件,则每个http请求都会首先在核心中间件中查找。您需要放置

app.use(cors());

定义了路由并定义了通往test.html的自定义路由(相关部分在下面标记):

var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var router = express.Router();
var cors = require('cors');
var ActiveDirectory = require('activedirectory');

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
    extended: true
}));

var port = process.env.PORT || 8080;

//use routes on the localhost:8080 path
app.use('/', router);

router.post('/api/Login1', function(req, res) {
    var username = req.body.username;
    var password = req.body.password;

    console.log(username);


    var config = {
        url: 'abcdefgh',
        baseDN: 'dc=abcdef,dc=abc'
    };
    var ad = new ActiveDirectory(config);
    // Authenticate
    ad.authenticate(username, password, function(err, auth) {
        if (err) {
            res.send("Login Failed. Incorrect username or password");
            console.log('ERROR: ' + JSON.stringify(err));
            return;
        }
        if (auth) {
            console.log('Authenticated!');
            res.redirect('/test.html');
        } else {
            console.log('Authentication failed!');
            res.send("Login Failed. Incorrect username or password");
        }
    });
});

/*------------------------------------------------------------------------------*/
//Relevant part:
router.get('/test.html', function(req, res) {
    if (loggedin) //check if user is loggedin, replace with your variables/checks
        res.sendFile('path/to/your/test.html');
    else
        res.redirect('/Login1'); //redirect somewhere
})

//This needs to be after the routes
app.use(cors());

/*---------------------------------------------------------------------------------*/

app.listen(port);
console.log('Listening at port ' + port);

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论