如何在每個用戶的用戶集合中使用類似isBanned標誌?這樣,您在登錄用戶之前檢查此標誌。您可以通過在禁用時應用日期字段來進一步擴展此功能,並且稍後可以計算經過的時間以查看是否可以自動解除禁用。
db.users.findOne()
{
[...]
"username" : "superadmin",
"profile" : {
"isActive" : true,
"createdBy" : "system",
// is this user banned?
"isBanned" : false,
"updatedAt" : ISODate("2016-10-07T17:33:42.773Z"),
"loginTime" : ISODate("2016-10-07T17:25:44.068Z"),
"logoutTime" : ISODate("2016-10-07T17:33:42.660Z")
},
"roles" : [
"superAdmin"
]
}
您的登錄表單事件可能是這樣的:
Template.loginForm.events({
'submit #login-form': function(event,template){
event.preventDefault();
// Check for isBanned flag
if(Meteor.users.find({username: template.find("#userName").value,isBanned: false}) {
Meteor.loginWithPassword(
template.find("#userName").value,
template.find("#password").value,
function(error) {
if (error) {
// Display the login error to the user however you want
console.log("Error logging in. Error is: " + error);
Session.set('loginErrorMessage', error.message);
Router.go('/');
}
}
);
Meteor.call('updateLoginTime');
Router.go('loggedIn');
},
}
我喜歡這個主意,雖然標誌可能不應該輪廓場坐進去,因爲這是由用戶客戶端編輯。 –
@BarryMichaelDoyle - 好奇,怎麼樣?我對流星也相當陌生,因此不知道整個這種安全漏洞。 – blueren
您可以在官方文檔中閱讀關於它的所有信息:https://guide.meteor.com/accounts.html#dont-use-profile –