使用javascript创建登录代码

斯莱文

我正在开发一种注册系统,用户可以通过单击按钮来创建随机字符串。

然后,他们可以将此字符串发送给非用户,以便他/他可以使用它进行注册。新用户将插入他/她选择的用户名和密码,以及收到的字符串。

为了实现这种情况,我正在寻找可以创建随机字符串的javascript函数。您可以将字符串提供给函数,并且可以识别它是否创建了-引发错误。

创建这样的系统的任何技巧以及在哪里可以找到这样的功能?

谢谢

编辑

这是一组封闭的后端用户。我已经是会员。我可以创建一个字符串,然后通过电子邮件,Skype,FB聊天等方式发送给我的朋友Jake。我告诉他,“输入您想要的任何用户名/密码,但是将我发送给您的代码放在注册表单的'您的代码'字段中,否则系统将不允许您注册”。在Jake注册后,该字符串不再有用,因为Jake创建了自己的密码,系统将其用于标识。就是这种情况。

我坚持使用Javascript,因为我将使用node.js / express.js,所以我想我所做的一切都必须用Javascript编写。

我猜我可以使用类似javascript版本的东西(php b-crypt如果存在)。或不。我什至不知道如何开始,所以任何指导方针都将是有用的。谢谢

强尼

好的,既然您已经指定要使用express,那么这就像是解决您的问题的方法。

首先,您想要一种生成随机字符串的方法,该字符串可以由创建它的函数来识别-这是不可能的。相反,您需要节点应用程序记住此函数生成的字符串。您可以通过多种方法进行此操作,但是我将概述以下过程:

  • 您可以使用以下几个路径创建一个简单的express API:/ generate/ register

  • 请求/ generate URL会在服务器上生成一个随机字符串,将该字符串存储在服务器上的活动代码数组中,然后返回该字符串。

  • /寄存器路线将有两个部分:GET路径会返回一个HTML表单,你的朋友将要填写与他的代码(您已通过电子邮件发送),他的新的用户名,和他的新密码。POST路径将这些数据发送到服务器,并与存储在活动代码数组中的代码检查他的代码。如果他的代码与数组中的代码之一匹配,则将使用他们在HTML表单中输入的凭据来创建用户(否则将返回错误,如invalid code error)。

  • 最好是,您想要创建一个HTML页面来请求/ generate URL。这将包括一个按钮,该按钮附加了一个onclick使XMLHttpRequest该URL异步执行的功能然后,它将返回的代码显示在<p>标签(或漂浮在船上的任何东西)中。

  • 当然,您还需要在/ register路由中创建HTML表单,以便朋友使用您通过电子邮件发送的代码注册他的新帐户。

  • 您将需要某种数据库来存储您的用户凭据。它可能像.json文件一样简单,也可以是更复杂的NOSQL数据库。我不会详细介绍实现此方法的细节,但是无论您采用哪种实现方法,都可以找到大量有用的资源。

这是您要编写的代码的基本概述:

routes / index.js-这将在您的快速应用中

var activeKeys = [];

router.get("/", function(req, res) {
    var options = {
        root: __dirname + '/public/',
        dotfiles: 'deny',
        headers: {
            'sent-timestamp': Date.now()
        }
    };

    res.sendFile("index.html", options, function (err) {
        if (err) {
            console.log(err);
            res.status(err.status).end();
        }
        else {
            return;
        }
    });
});

router.get("/generate", function(req, res) {
    require('crypto').randomBytes(48, function(ex, buf) {
        var token = buf.toString('hex');
        activeKeys.push(token);
        res.send(token);
        return;
    });
});

router.get("/register", function(req, res) {    
    var options = {
        root: __dirname + '/public/',
        dotfiles: 'deny',
        headers: {
            'sent-timestamp': Date.now()
        }
    };

    res.sendFile("register.html", options, function (err) {
        if (err) {
            console.log(err);
            res.status(err.status).end();
        }
        else {
            return;
        }
    });
});

router.post("/register", function(req, res) {
    var validKey = keys.indexOf(req.body.code);
    if (validKey < 0) {
        res.send("invalid code error");
    }
    else {
        //here you would implement adding your newly created user to the database,
        //and then sending a success response
    }
});

public / index.html-用户使用的默认路由

<button id="generate">Generate Key</button>
<p>Mail this to your friend!</p><p id="key"></p>
<script>
    document.getElementById("generate").addEventListener("click", function(e) {
        var xhr = new XMLHttpRequest();
        xhr.addEventListener("load", function() {
          document.getElementById("key").innerHTML(this.responseText);
        });
        xhr.open("GET", "http://www.example.com/generate", true);
        xhr.send();
    });
</script>

public / register.html-您的朋友在这里注册他的新帐户

<form method="post" action="/generate">
    <input placeholder="your code" name="code" type="text"></input>
    <input placeholder="username" name="username" type="text"></input>
    <input placeholder="password" name="password" type="password"></input>
    <input placeholder="confirm" name="confirm" type="password"></input>
</form>

那应该适合您的需求。

请注意:我没有测试过任何此代码,所以不要指望复制+粘贴并使其正常工作。这仅是一个准则

希望这可以帮助!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TOP 榜单

热门标签

归档