How to generate new Meteor login tokens (server side) in order to make a quick login link

后端 未结 3 564
迷失自我
迷失自我 2020-12-28 17:52

Meteor has a loginWithToken method, and there are resume tokens in the user object. So one can login using one of these tokens with loginWith

相关标签:
3条回答
  • 2020-12-28 18:22

    Yes, you can generate new tokens by calling Accounts._generateStampedLoginToken(). You can call it from within a login handler.

    https://github.com/meteor/meteor/blob/master/packages/accounts-base/accounts_server.js#L114

    0 讨论(0)
  • 2020-12-28 18:31

    it's 2015 - use one of these packages:

    • poetic:accounts-passwordless
    • acemtp:accounts-passwordless

    http://fastosphere.meteor.com/?q=passwordless

    0 讨论(0)
  • 2020-12-28 18:38

    As Johnny said, you can use the Accounts._generateStampedLoginToken() function, which is actually nothing special, just the following function:

    _generateStampedLoginToken = function () {
      return {
        token: Random.secret(),
        when: new Date
      };
    }
    

    anyway, to use it, here is an example:

    // Server //
    
    // Creates a stamped login token
    var stampedLoginToken = Accounts._generateStampedLoginToken();
    
    /**
     * Hashes the stamped login token and inserts the stamped login token 
     * to the user with the id specified, adds it to the field 
     * services.resume.loginTokens.$.hashedToken. 
     * (you can use Accounts._hashLoginToken(stampedLoginToken.token) 
     * to get the same token that gets inserted)
     */
    Accounts._insertLoginToken(user._id, stampedLoginToken);
    
    
    // Client //
    
    // Login with the stamped loginToken's token
    Meteor.loginWithToken(stampedLoginToken.token);
    
    0 讨论(0)
提交回复
热议问题