Omniauth和强大的参数

时间:2014-09-10 10:39:16

标签: ruby-on-rails-4 omniauth strong-parameters

所以这可能是一个非常愚蠢的问题,但我已经将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

由于

1 个答案:

答案 0 :(得分:0)

由于您未在对象创建时使用批量分配,因此强参数不会为您提供任何额外的安全性。

  

使用此插件时,动作控制器参数禁止在活动模型批量分配中使用,直到它们被列入白名单。

https://github.com/rails/strong_parameters