我想使用用户注册页面收集用户数据,并使用其电子邮件验证检查,以筛选出假用户。但问题是,我不希望这些用户能够登录到网站。如何在Drupal 7中做到这一点?
注:所以根本没有登录。我只想用注册系统给他们发一封电子邮件来验证他们的帐户。
发布于 2016-05-23 15:07:40
这是一个相当棘手的问题,尤其是“.根本没有登录.”其中的一部分。海事组织你必须允许至少有特定角色的人进行登录.如果没有,那么即使是管理员(或user/1)也无法登录。这也意味着您不能拒绝每个人访问登录URL (否则管理员将如何执行登录?)
下面是一个解决方案,“在登录后立即将每个人(管理员除外)踢出去,但只在您向这样的用户发送适当的eMail之后”。
下面是应该回答您的问题的规则(以规则导入格式):
{ "rules_redirect_to_logout_except_for_role_id3" : {
"LABEL" : "Redirect to logout except for role ID3",
"PLUGIN" : "reaction rule",
"ACTIVE" : false,
"OWNER" : "rules",
"REQUIRES" : [ "rules" ],
"ON" : { "user_login" : [] },
"IF" : [
{ "NOT user_has_role" : { "account" : [ "account" ], "roles" : { "value" : { "3" : "3" } } } }
],
"DO" : [
{ "mail" : {
"to" : "[account:mail]",
"subject" : "No login allowed",
"message" : "You just completed a login to [site:name], located at [site:url].\r\n\r\nHowever, at this time we do not allow any login ...\r\n\r\nThanks anyway for validating some of your account data, such as your eMail ID.",
"language" : [ "" ]
}
},
{ "redirect" : { "url" : "user\/logout" } }
]
}
}规则将在登录完成后立即触发(规则条件)。对于任何没有与"role id = 3“(= Rules条件)匹配的角色的用户,也就是对于任何非管理员的用户,它将执行这些规则操作(按指定的顺序):
user/logout (=强制用户再次注销)。如果启用了规则UI,则只需导入上述规则并调整角色id的值(=3)以满足您的需要。你就解决了你的问题。
显然,您必须调整eMail主题和内容以满足您的需要。可能您还希望使用其他角色ID(或其他角色ID),这些角色ID无论如何都允许登录。
使用上述方法,要完全回答您的问题,需要做的就是创建一个清单(一个视图)。检查所有用户的最新登录日期。那些在X小时/天前创建但从未完成登录的帐户是您正在寻找的假用户(因为他们在注册期间输入的eMail ID无效,或者这些用户实际上不想注册,因此他们从未通过适当的临时登录来确认他们的注册请求)。
注意:默认情况下,这个规则是禁用的(所以不要忘记也启用它)。
发布于 2016-05-21 00:20:42
你可以用规则
事件:保存新帐户后
操作:阻止用户>>数据选择器:帐户
发布于 2016-05-23 12:25:38
最简单的方法是,转到admin/config/people/accounts并选择访问者,但需要管理员批准并保存。
通过选择此选项,用户可以在站点上注册,默认情况下他们将status设置为blocked,如果管理员批准了它们,他们可以登录到站点,否则就无法登录站点(阻止用户不能登录到站点)。不需要任何附加规则或代码。
https://drupal.stackexchange.com/questions/195129
复制相似问题