gpt4 book ai didi

匿名用户身份验证

转载 作者:行者123 更新时间:2023-12-04 04:32:05 25 4
gpt4 key购买 nike

我想重现 plunker 如何管理 匿名 帐户。

Plunker 可以识别匿名用户。例如,我们可以将 plunker 保存为 anonym然后 freeze它。其结果,

  • 只有同一用户(在清除浏览器历史记录之前)才能完全访问此 plunker(例如,保存修改、解冻)。
  • 如果同一个用户在另一个浏览器中打开它或其他用户打开同一个链接,他们不能save任何修改;他们必须fork它。

  • 在我的网站中,我使用 local passport.js的策略管理命名用户。例如,
    router.post('/login', function (req, res, next) {
    if (!req.body.username || !req.body.password)
    return res.status(400).json({ message: 'Please fill out all fields' });

    passport.authenticate('local', function (err, user, info) {
    if (err) return next(err);
    if (user) res.json({ token: user.generateJWT() });
    else return res.status(401).json(info);
    })(req, res, next);
    });

    我使用 localStorage来存储 token 。例如,
    auth.logIn = function (user) {
    return $http.post('/login', user).success(function (token) {
    $window.localStorage['account-token'] = token;
    })
    };

    auth.logOut = function () {
    $window.localStorage.removeItem('account-token');
    };

    有谁知道 passport.js是否有任何策略或现有工具来管理匿名帐户,就像 plunker 所做的那样?否则,有没有传统的方法来实现这一目标?

    最佳答案

    Passport 允许匿名身份验证。有一个相同的 Passport 匿名策略:

    app.get('/',
    // Authenticate using HTTP Basic credentials, with session support disabled,
    // and allow anonymous requests.
    passport.authenticate(['basic', 'anonymous'], { session: false }),
    function(req, res){
    if (req.user) {
    res.json({ username: req.user.username, email: req.user.email });
    } else {
    res.json({ anonymous: true });
    }
    });

    这将使用您的基本策略,如果您使用本地身份验证,则可以将其替换为本地策略。如果没有提供任何内容,它会回退到匿名策略,如下所示:
    passport.use(new BasicStrategy({
    },
    function(username, password, done) {
    // asynchronous verification, for effect...
    process.nextTick(function () {

    // Find the user by username. If there is no user with the given
    // username, or the password is not correct, set the user to `false` to
    // indicate failure. Otherwise, return the authenticated `user`.
    findByUsername(username, function(err, user) {
    if (err) { return done(err); }
    if (!user) { return done(null, false); }
    if (user.password != password) { return done(null, false); }
    return done(null, user);
    })
    });
    }
    ));

    // Use the BasicStrategy within Passport.
    // This is used as a fallback in requests that prefer authentication, but
    // support unauthenticated clients.
    passport.use(new AnonymousStrategy());

    完整的例子可以在这里找到:- https://github.com/jaredhanson/passport-anonymous/blob/master/examples/basic/app.js

    关于匿名用户身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43480590/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com