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

Node.JS:如何使用参数转发到登录页面?

IT培训 admin 12浏览 0评论

Node.JS:如何使用参数转发到登录页面?

我正在使用node.js,express,express-session,ejs构建登录功能。

这是登录页面(即index.ejs)

<html>
    <head>
        <meta charset="UTF-8">
        <title>Video Chat Room</title>
        <link rel="stylesheet" type="text/css" href="/css/style.css">
        <style>
            #message
            {
                color:red;
                font-weight: bold;
            }
        </style>
        <script src=".4.1/jquery.min.js"></script>
        <script>
            $( document ).ready(function() {
                var messageBox=document.getElementById("message");
<%
                if  (typeof errorField!="undefined") {
                    switch (errorField) {
                        case "email":%>
                            messageBox.innerHTML="Your email address has been used by another user, please use another one.";
                            document.getElementById("email").focus();
<%                          break;
                        case "logoutSuccess":%>
                            messageBox.innerHTML="<%=alias%> has successfully logged out.";
<%                          break;
                    }
                }
%>              
            });
        </script>   
    </head> 
    <body>
        <form method="post" action="/login">
            Nick name/Alias:<input type=text required name="alias" value="<%=((typeof user=='undefined')?'':user.alias)%>"><br>
            Email Address:<input type=email id="email" required name="email" value="<%=((typeof user=='undefined')?'':user.email)%>"><br>
            <input type="submit" value="Login">
        </form>
        <div id="message">
        </div>
    </body>
</html> 

这是服务器端代码(即server.js)

........
app.get('/',function (req,res) {
   res.render('../ejs/index.ejs');
});

app.post('/login', function(req, res) {

var alias = req.body.alias;
var email = req.body.email;
var user=require("./classes/user.js");
user.alias=alias;
user.email=email;

if (user.login) {
    req.session.user = user;
    res.redirect('/home/');
} else {
   res.locals.errorField="email";
   res.locals.user=user;
   res.render('../ejs/index.ejs');
}

但是,当登录过程失败时,尽管Web输出了登录页面(即index.ejs),但浏览器地址栏仍停留在“ / login”中,这很好。是否可以将浏览器地址栏更改为“ /”,并且index.ejs也可以读取errorField和用户值?

回答如下:

如果您希望用户登录错误返回到/,则需要执行res.redirect("/")。如果要向该页面添加一些可以在服务器端渲染或客户端渲染中使用的参数,那么最简单的方法是添加查询参数:

Node.JS:如何使用参数转发到登录页面?

我正在使用node.js,express,express-session,ejs构建登录功能。

这是登录页面(即index.ejs)

<html>
    <head>
        <meta charset="UTF-8">
        <title>Video Chat Room</title>
        <link rel="stylesheet" type="text/css" href="/css/style.css">
        <style>
            #message
            {
                color:red;
                font-weight: bold;
            }
        </style>
        <script src=".4.1/jquery.min.js"></script>
        <script>
            $( document ).ready(function() {
                var messageBox=document.getElementById("message");
<%
                if  (typeof errorField!="undefined") {
                    switch (errorField) {
                        case "email":%>
                            messageBox.innerHTML="Your email address has been used by another user, please use another one.";
                            document.getElementById("email").focus();
<%                          break;
                        case "logoutSuccess":%>
                            messageBox.innerHTML="<%=alias%> has successfully logged out.";
<%                          break;
                    }
                }
%>              
            });
        </script>   
    </head> 
    <body>
        <form method="post" action="/login">
            Nick name/Alias:<input type=text required name="alias" value="<%=((typeof user=='undefined')?'':user.alias)%>"><br>
            Email Address:<input type=email id="email" required name="email" value="<%=((typeof user=='undefined')?'':user.email)%>"><br>
            <input type="submit" value="Login">
        </form>
        <div id="message">
        </div>
    </body>
</html> 

这是服务器端代码(即server.js)

........
app.get('/',function (req,res) {
   res.render('../ejs/index.ejs');
});

app.post('/login', function(req, res) {

var alias = req.body.alias;
var email = req.body.email;
var user=require("./classes/user.js");
user.alias=alias;
user.email=email;

if (user.login) {
    req.session.user = user;
    res.redirect('/home/');
} else {
   res.locals.errorField="email";
   res.locals.user=user;
   res.render('../ejs/index.ejs');
}

但是,当登录过程失败时,尽管Web输出了登录页面(即index.ejs),但浏览器地址栏仍停留在“ / login”中,这很好。是否可以将浏览器地址栏更改为“ /”,并且index.ejs也可以读取errorField和用户值?

回答如下:

如果您希望用户登录错误返回到/,则需要执行res.redirect("/")。如果要向该页面添加一些可以在服务器端渲染或客户端渲染中使用的参数,那么最简单的方法是添加查询参数:

发布评论

评论列表 (0)

  1. 暂无评论