所以这可能是一个非常愚蠢的问题,但我已经将Twitter作为提供者设置为Oauth,类似于Ryan Bates的'Simple Omniauth Railscast - 我现在的问题是,这是设置和工作应该我在会话控制器中设置了强大的参数,或者这不是必需的吗?
SessionsController.rb
class SessionsController < ApplicationController
def create
@user = User.find_by_uid(auth_hash[:uid]) || User.create_user(auth_hash)
session[:uid] = @user.id
if @user
redirect_to root_path
else
redirect_to root_path, flash: {signinerror: "Oops, something went wrong with your sign in. Please try again."}
end
end
def auth_hash
request.env['omniauth.auth']
end
def destroy
session[:uid] = nil
redirect_to root_path
end
end
User.rb
class User < ActiveRecord::Base
has_many :opinions
def self.create_user(auth_hash)
create do |user|
user.provider = auth_hash[:provider]
user.name = auth_hash[:info][:name]
user.uid = auth_hash[:uid]
user.username = auth_hash[:info][:nickname]
user.email = auth_hash[:info][:email]
user.image = auth_hash[:info][:image]
end
end
end
由于
答案 0 :(得分:0)
由于您未在对象创建时使用批量分配,因此强参数不会为您提供任何额外的安全性。
使用此插件时,动作控制器参数禁止在活动模型批量分配中使用,直到它们被列入白名单。