gpt4 book ai didi

ruby-on-rails - ActiveModel::MassAssignmentSecurity::错误

转载 作者:行者123 更新时间:2023-12-02 03:59:37 24 4
gpt4 key购买 nike

您好,我正在使用 devise 和 omniauth 来验证 facebook 登录,但出现以下错误:

Can't mass-assign protected attributes: token
app/models/user.rb:20:in `apply_omniauth'
app/controllers/authentications_controller.rb:19:in `create'

这是用户模型:

class User < ActiveRecord::Base

# The relationship between the User and Authentication model
has_many :authentications, :dependent => :delete_all

# Include default devise modules. Others available are:
# :token_authenticatable, :confirmable,
# :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable

# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :remember_me,
# attr_accessible :title, :body

def apply_omniauth(auth)
# In previous omniauth, 'user_info' was used in place of 'raw_info'
self.email = auth['extra']['raw_info']['email']
authentications.build(:provider => auth['provider'], :uid => auth['uid'], :token => auth['credentials']['token'])
end

end

这是我的身份验证 Controller :

class AuthenticationsController < ApplicationController
def index
@authentications = current_user.authentications if current_user
end

def create
auth = request.env["omniauth.auth"]

# Try to find authentication first
authentication = Authentication.find_by_provider_and_uid(auth['provider'], auth['uid'])

if authentication
# Authentication found, sign the user in.
flash[:notice] = "Signed in successfully."
sign_in_and_redirect(:user, authentication.user)
else
# Authentication not found, thus a new user.
user = User.new
user.apply_omniauth(auth)
if user.save(:validate => false)
flash[:notice] = "Account created and signed in successfully."
sign_in_and_redirect(:user, user)
else
flash[:error] = "Error while creating a user account. Please try again."
redirect_to root_url
end
end
end

def destroy
@authentication = Authentication.find(params[:id])
@authentication.destroy
redirect_to authentications_url, :notice => "Successfully destroyed authentication."
end
end

有人可以解释为什么我会收到此错误,以及如何解决它吗?

最佳答案

:token 添加到身份验证模型中的 attr_accessible 行应该可以解决问题。

关于ruby-on-rails - ActiveModel::MassAssignmentSecurity::错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11091837/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com