在登录表单上添加自定义字段
Add custom field on signin form
使用 meteor useraccounts 包,我想在 signIn
表单中添加一个自定义字段(名为 token
)以启用 2fa 身份验证。
不幸的是 AccountTemplates.addField
仅适用于 signUp
形式,据我所知。
有什么提示吗?
帐户包有一个 Accounts.onLogin
函数,您可以使用它来调用方法和更新用户帐户。
Accounts.onLogin(function(user) {
Meteor.call('setToken', user)
})
然后是
Meteor.methods({
setToken: function(user) {
// Do some clever check
Meteor.users.update(/* Set your token */);
},
});
使用方法的优点是您可以进行一些服务器端检查以确保您的令牌未被黑客入侵。
我设法实现的答案是用不同的方法改变模式,直接使用 Meteor API:
- 在用户集合上设置一个特殊字段:
tokenverified: false
- 添加
Meteor.onLogin
(每次登录或手动刷新页面时调用)和Meteor.onLogout
回调以将此字段设置为false
- 创建一个模板
verify2FA
来处理令牌并设置tokenverified: true
- 创建一个 iron-router 插件
ensure2FA
,它将检查此令牌并重定向到 verify2FA
模板。
使用 meteor useraccounts 包,我想在 signIn
表单中添加一个自定义字段(名为 token
)以启用 2fa 身份验证。
不幸的是 AccountTemplates.addField
仅适用于 signUp
形式,据我所知。
有什么提示吗?
帐户包有一个 Accounts.onLogin
函数,您可以使用它来调用方法和更新用户帐户。
Accounts.onLogin(function(user) {
Meteor.call('setToken', user)
})
然后是
Meteor.methods({
setToken: function(user) {
// Do some clever check
Meteor.users.update(/* Set your token */);
},
});
使用方法的优点是您可以进行一些服务器端检查以确保您的令牌未被黑客入侵。
我设法实现的答案是用不同的方法改变模式,直接使用 Meteor API:
- 在用户集合上设置一个特殊字段:
tokenverified: false
- 添加
Meteor.onLogin
(每次登录或手动刷新页面时调用)和Meteor.onLogout
回调以将此字段设置为false - 创建一个模板
verify2FA
来处理令牌并设置tokenverified: true
- 创建一个 iron-router 插件
ensure2FA
,它将检查此令牌并重定向到verify2FA
模板。