3

我正在尝试使用他们的用户帐户密码限制我的一些用户的操作。我有一个转账控制器,用户可以使用转账控制器中的create方法进行转账。

每次用户单击转移按钮以验证转移时,我都想要求输入密码,但我在网上找不到与此相关的任何内容。

我想在视图中添加一个密码字段,并且仅当密码是用户帐户密码时才处理传输。

我正在使用设计来管理我的用户帐户。

我怎么能那样做?

谢谢,

形式 :

<%= form_for current_user.transfers.build do |f| %>
<div class="amount">
    <h5>Select an amount</h5>
    <div class="amount-btns">
        <a class="amount-btn" href="#"><span data-amount="10">10&#36;</span></a>
        <a class="amount-btn" href="#"><span data-amount="20">20&#36;</span></a>
        <a class="amount-btn" href="#"><span data-amount="30">30&#36;</span></a>
        <a class="amount-btn" href="#"><span data-amount="50">50&#36;</span></a>
        <%= f.hidden_field :amount, :id => :amount %>
        <%#= f.hidden_field :teen_id , :id => :user_id_auto_donation %>
    </div>
</div>
<div class="choose-amount">
    <div class="choose-amnt" action="#">
        <div class="form-row choose-lnk">
            <%= f.collection_select :teen_id, current_user.followed_users, :id, :first_name , include_blank: false, :prompt => 'Select a Teen' %>
        </div>

            <%= hidden_field_tag :no_card if !current_user.customer_id? %>
            <%= password_field(:password, :password, :size => 20, :class => 'form_input') %>
            <%= f.submit 'Send', :class => "orange-btn", :id => "send_donation"%>
<% end %>

转移控制器:

def create
 Rails.logger.debug(params[:password])
 Rails.logger.debug(current_user.valid_password?(params[:password]))
if current_user.valid_password?(params[:password])
....
else
redirect_to :back
end

Rails.logger.debug(params[:password]) 返回我输入的密码和正确的密码。

Rails.logger.debug(current_user.valid_password?(params[:password])) 返回 false 但如果我将 params[:password] 替换为实际密码,则返回 true

谢谢你的帮助 !

4

1 回答 1

1

我发现这个链接向您展示了如何检查用户凭据,对于您的情况,您将执行以下操作(假设您将密码作为名为“密码”的参数发送):

# use the return value to determine if the user inserted the correct password
if(current_user.valid_password?(params[:password]))
  # create transfer
else
  # tell user password is invalid
end
于 2012-11-14T11:30:07.937 回答