railsチュートリアル第七章 Strong Parameters
Strong Parameters
user = User.new(params[:user])
paramsハッシュ全体を初期化するという行為はセキュリティ上、極めて危険
この場合誰でも管理者に化けることができるため
paramsを使うのに条件をつけた。
paramsハッシュでは:user属性を必須とし、名前、メールアドレス、パスワード、パスワードの確認の属性をそれぞれ許可し、
それ以外を許可しないようにする。
params.require(:user).permit(:name, :email, :password, :password_confirmation)
:user属性でなければ、情報を確認できないようにした。
それを解決した。
class UsersController < ApplicationController
.
.
.
def create
@user = User.new(user_params)
# 外部メソッドを使う
if @user.save
# 保存の成功をここで扱う。
else
render 'new'
# 保存に成功しなければnewアクションに移動する
end
end
private
#外部から使えないようにする
#習慣的に二つインデントを下げる
def user_params
# Usersコントローラの内部でのみ実行される
# Web経由で外部ユーザーにさらされない
params.require(:user).permit(:name, :email, :password,
:password_confirmation)
end
end
間違ってもエラーメッセージが出てこない
かつ有効なユーザー情報を入力しても登録されない。
これから改良するらしい。
演習
1./signup?admin=1 にアクセスし、paramsの中にadmin属性が含まれていることをデバッグ情報から確認してみましょう。
--- !ruby/object:ActionController::Parameters
parameters: !ruby/hash:ActiveSupport::HashWithIndifferentAccess
admin: '1'
controller: users
action: new
permitted: false
adminが入っていた。
Author And Source
この問題について(railsチュートリアル第七章 Strong Parameters), 我々は、より多くの情報をここで見つけました https://qiita.com/masatom86650860/items/e5dad3ba8d4f671a0e3b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .