[英]How can I redirect user during login in Wordpress?
我为我的用户添加了一个选项到自定义 Wordpress 页面,用户可以在其中为其帐户设置 2 路身份验证。 当用户启用双向身份验证时,我将生成的种子保存到他的用户元中。 现在我有一个问题,因为我不知道如何在登录过程中检查它。
我认为首先进行正常登录然后检查用户是否启用了安全功能可能是一个不错的选择。 如果是,我可以在登录后将他重定向到自定义页面,我必须在其中输入验证码。 当代码正确时,我可以继续登录。 这可能吗? 因为当他已经登录并单击帐户页面时,用户可以看到页面内容,所以这个安全功能就变得垃圾了,不再需要了。
有没有人知道 Wordpress 并且可以帮助/说我可以添加此验证的最佳钩子或位置?
这不是关于给我的员工编码的问题! 当我知道这个地方和正确的过程时,我会自己做这一切。
描述我的用例的图片:
基本思想是:使用 session/cookie(选择最适合您的那个)来识别两因素身份验证。 您可以在init
挂钩它们。
这是一个快速示例(未经测试,但希望您能理解):
function twofactor_check () {
//no need to do anything, if user is not logged in
if ( !is_user_logged_in() ) {
return;
}
//check two factor
$two_factor_enabled = 'check if enabled';
//no headache when two factor is disabled
if ( !$two_factor_enabled ) {
return;
}
//twofactor is already passed
if ( isset($_SESSION['two_factor_verified'] ) && $_SESSION['two_factor_verified'] == 'twofactor_passed' ) {
return;
}
if ( session_status() == PHP_SESSION_NONE ) {
session_start();
}
//twofactor not passed. user will only get landing page.
if ( !isset($_SESSION['two_factor_verified'] ) ) {
$_SESSION['two_factor_verified'] = 'started';
wp_redirect( 'url_to_two_factor_code_landing_page' );
exit;
}
//on your landing page, when passed, set $_SESSION['two_factor_verified'] to 'twofactor_passed'.
//and when failed, destroy $_SESSION['two_factor_verified'], so user can only access landing page before verifying twofactor.
//destry $_SESSION['two_factor_verified'], when users log out. you can use 'wp_logout' hook.
}
add_action('init', 'twofactor_check');
这可以解决您必须检查此功能中是否启用身份验证并将用户重定向到您的页面的问题
function admin_default_page() {
if(auth == 'yes'){
return '/add-redirect-url-here';
}
}
add_filter('login_redirect', 'admin_default_page');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.