Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql RubyonRails IF语句验证检查_Mysql_Ruby On Rails_Ruby_If Statement - Fatal编程技术网

Mysql RubyonRails IF语句验证检查

Mysql RubyonRails IF语句验证检查,mysql,ruby-on-rails,ruby,if-statement,Mysql,Ruby On Rails,Ruby,If Statement,所以我是RubyonRails新手,我对这个if语句有一个问题,基本上我要检查的是sql数据库中是否存在用于登录电子邮件地址的确认令牌。如果它确实回退了一条消息,则您的电子邮件未经验证。单击电子邮件中的链接后,它将删除数据库中的令牌。然后您可以继续登录。我不能让它为我的生活工作。除了验证检查,其他一切都正常。谢谢你的帮助 def身份验证(电子邮件、密码) command=AuthenticateUser.call(电子邮件、密码) user=user.find_通过电子邮件:(电子邮件) 确认

所以我是RubyonRails新手,我对这个if语句有一个问题,基本上我要检查的是sql数据库中是否存在用于登录电子邮件地址的确认令牌。如果它确实回退了一条消息,则您的电子邮件未经验证。单击电子邮件中的链接后,它将删除数据库中的令牌。然后您可以继续登录。我不能让它为我的生活工作。除了验证检查,其他一切都正常。谢谢你的帮助

def身份验证(电子邮件、密码)
command=AuthenticateUser.call(电子邮件、密码)
user=user.find_通过电子邮件:(电子邮件)
确认令牌=
User.find\u by\u confirmation\u token(参数[:confirmation\u token]。to\s)
如果user.present?&&确认令牌。是否存在?
呈现json:{error:'Email not verified'},状态::unauthorized
elsif命令成功了吗?
呈现json:{
访问令牌:command.result,
消息:“登录成功”
}
其他的
呈现json:{error:command.errors},状态::未经授权
结束

结束
您只需检查是否设置了用户的
确认\u令牌
属性:

user = User.find_by(email: email)
if user && user.confirmation_token.present?
  # ...
elsif command.success?
  # ...
else
  # ...
end

user.confirmation\u token.present?
可以缩短为
user.confirmation\u token?
我认为这将有助于清理您的逻辑,因为无需进行两次用户查找。查找用户和使用对象可能会引起安全问题。。如果用户在系统中,让AuthenticateUser找到用户并获得成功。当您发送电子邮件时,只需在电子邮件中构建一个按钮,其中包含指向端点的链接,该端点将验证电子邮件并将确认令牌设置为nil

def身份验证(电子邮件、密码)
command=AuthenticateUser.call(电子邮件、密码)
已确认\u令牌=
用户。通过确认令牌(参数[:确认令牌])查找。是否存在?
如果!已确认\u令牌&!成功?
呈现json:{error:'Email not verified'},状态::unauthorized
elsif命令&&command.success?
呈现json:{
访问令牌:command.result,
消息:“登录成功”
}
其他的
呈现json:{error:command.errors},状态::未经授权
结束

结束
按原样运行代码时会发生什么?{“访问令牌”:“eyJhbGciOiJub25lIn0.eyJ1c2VyX2lkIjo5NCwiZXhwIjoxNTI2NTcwOTI0fQ.”,“消息”:“登录成功”}是否正确
用户=user.find\u通过电子邮件:(电子邮件)
?我没有见过这样的东西。@JagdeepSingh它与
user=user.find\u by email:email
–括号是多余的(而且有点混乱)。@Mark第3行继续第4行,它实际上是
确认令牌=user。通过\u确认\u令牌(…)查找\u