Ruby on rails 对Rails应用程序使用Wordpress身份验证-从Rails到Wordpress之间的SSO
我们有一位客户希望在用户表的“源”中使用他们当前的Wordpress站点 (如果有区别,rails应用程序将成为web前端以及iOS和Android前端的主要应用程序界面。) 因此,用户将通过网站登录,其想法是通过电子邮件/pwd向Wordpress进行API调用。它将返回一个成功的身份验证。然后,我会向移动平台发放一个令牌或类似的东西,以允许他们继续访问Ruby on rails 对Rails应用程序使用Wordpress身份验证-从Rails到Wordpress之间的SSO,ruby-on-rails,wordpress,api,devise,Ruby On Rails,Wordpress,Api,Devise,我们有一位客户希望在用户表的“源”中使用他们当前的Wordpress站点 (如果有区别,rails应用程序将成为web前端以及iOS和Android前端的主要应用程序界面。) 因此,用户将通过网站登录,其想法是通过电子邮件/pwd向Wordpress进行API调用。它将返回一个成功的身份验证。然后,我会向移动平台发放一个令牌或类似的东西,以允许他们继续访问 你有没有想过如何在rails->wordpress之间进行身份验证?以防其他人想要完成同样的事情。下面是我如何解决这个问题的。首先,我的wo
你有没有想过如何在rails->wordpress之间进行身份验证?以防其他人想要完成同样的事情。下面是我如何解决这个问题的。首先,我的wordpress实例和rails实例位于同一个框中,这使得这个解决方案可行 1) 我使用Desive在rails端进行身份验证。我已经为“authenticate!”方法创建了一个覆盖,该方法检查wordpress
require 'devise/strategies/authenticatable'
module Devise
module Strategies
class DeviseOverride < Authenticatable
def valid?
true
end
def authenticate!
if params[:user]
user = User.find_by_email(params[:user][:email])
# user = User.first
if user # && user.encrypted_password == params[:user][:password]
#check password with Wordpress to verify it is a good user
result = WordpressApi.verify_user(params[:user][:email], params[:user][:password])
if result
success!(user)
else
fail!("Couldn't verify your login. Please try again.")
end
else
fail!("Could not log in")
end
else
fail!("")
end
end
end
end
end
Warden::Strategies.add(:local_override, Devise::Strategies::DeviseOverride)
$user = get_user_by('email', $email);
// print $user->data->user_email;
if ($user && wp_check_password( $pwd, $user->data->user_pass, $user->ID) )
return_json_success('Valid User', 'user', $user);
else{
return_json_error('Passwords do not match', 200);
// print "Password: {$pwd}, User: {$user} UserPass: {$user->data->user_pass} UserID: {$user->ID}";
// print 'Passwords do not match';
}