我在我的开发箱上连接了电子邮件,并在创建用户后收到一封验证电子邮件。我可以单击包含的链接,它会将我带到我的主页。
1)点击链接似乎做了一些处理,因为它重定向到/,但它不会改变用户帐户上的已验证标志。
2)它似乎忽略了我的 Accounts.config 设置,并且仅在我明确调用时才有效
token = Accounts.sendVerificationEmail(userId)
细节:
mrt --version
Meteorite version 0.6.11
Release 0.6.5.1
mrt list --using
standard-app-packages
preserve-inputs
less
coffeescript
iron-router
foundation
http
moment
email
spin
roles
accounts-base
accounts-password
accounts-ui
服务器/lib/account.coffee
Accounts.config
sendVerificationEmail: true
forbidClientAccountCreation: true
服务器方法:
Meteor.startup ->
create_user = (options) ->
console.log('create_user: ' + options.username)
userId = Accounts.createUser options
# should not be necessary, but I get email only when included
token = Accounts.sendVerificationEmail(userId)
Meteor.methods({ create_user: create_user })
在上面调用之后,mongo 显示:
emails: [ { "address" : "jim@less2do.com" , "verified" : false}]
and
email: { "verificationTokens" : [ { "token" : "N3sLEDMsutTbjxyzX" , "address" : "jim@less2do.com" , "when" : 1.380616343673E12}]}
获取默认电子邮件:
Hello,
To verify your account email, simply click the link below.
http://localhost:3000/#/verify-email/N3sLEDMsutTbjxyzX
Thanks.
点击上面的链接可以让我:
http://localhost:3000/
但是mongo db没有变化。
我期待通过帐户密码处理的 /#/verify-email/N3sLEDMsutTbjxyzX 提取一些东西并更新用户文档。
accounts-base.js 尝试使用
match = window.location.hash.match(/^\#\/verify-email\/(.*)$/);
但此时位置哈希为空。
我错过了需要手动设置路线的东西吗?我使用铁路由器会破坏东西吗?以防万一,
Router.map ->
this.route 'home',
path: '/'
this.route 'inboxes'
this.route 'availability'
this.route 'find-agent'
this.route 'inbox-tour'
this.route 'availability-tour'
this.route 'find-agent-tour'
this.route 'inbox',
path: '/inbox/:_id'
data: () ->
m = Messages.findOne this.params._id
m._markRead()
fixed = _.map m.history.versions, (msg) =>
msg.left = (msg.author is 'offer')
msg.body = msg.body.replace( /[\r\n]+/g, "<br>")
msg
m.history.versions = fixed
Session.set 'messageVersions', fixed
m
waitOn: db.subscriptions.messages
loadingTemplate: 'loading'
notFoundTemplate: 'notFound'
this.route 'register',
this.route 'requested',
this.route 'blog',
this.route 'test',
this.route 'aboutUs'
Router.configure
layout: 'layout'
notFoundTemplate: 'notFound'
loadingTemplate: 'loading'
renderTemplates:
'footer': { to: 'footer' }
'sidebar': { to: 'sidebar' }
### Commented to rule out this routine
before: ->
routeName = @context.route.name
debugger
# no need to check at these URLs
#, etc
return if _.include(["request", "passwordReset","register", "tour"], routeName)
return if _.intersection(routeName.split('-'), ["tour"]).length > 0
return if routeName.indexOf('verify-email') != -''
user = Meteor.user()
unless user
#@render (if Meteor.loggingIn() then @loadingTemplate else "/")
if Meteor.loggingIn()
console.log('still logging in, no user, to ' + @loadingTemplate)
@render @loadingTemplate
console.log('!render ' + @loadingTemplate + ' completed' )
else
console.log('no user, / from router over ' + @loadingTemplate)
@render "home"
@stop()
###
谢谢!