Rails 4 앱에 대해 상당히 바닐라 등록 시스템을 보유하고 있으며, 이상한 기능을 추가하고 싶습니다. 여러 개의 등록 양식을 제공하고 데이터가 제출되는 페이지를 기반으로 새 User 개체에 대한 값을 비밀리에 설정하고 싶습니다.동일한 사용자 모델에 대해 여러 등록 페이지를 구분하십시오.
보안상의 이유로 현재 수행하는 방식이 좋지 않습니다. 그것은 잘 작동하지만, 정통한 사용자가 브라우저의 dev 도구를 사용하여 숨겨진 필드의 값을 변경하고 그들이 다른 페이지에서 온 것을 나타낼 수 있습니다.
routes.rb
get '/signup', to: 'users#new'
get '/red-signup', to: 'users#new', color: 'red'
get '/blue-signup', to: 'users#new', color: 'blue'
users_controller.rb
def new
@user = User.new
@color = params[:color] || 'grey' # default of grey
end
사용자/new.html.erb
<%= form_for(@user) do |f| %>
...
<%= f.hidden_field :color, value: @color %> # VULNERABLE TO TAMPERING
<%= f.submit "Create my account" %>
<% end %>
S
o, 나는 다른 페이지에서 온 새로운 등록을 구별하는 변조 방지 방법을 원합니다. 나는 폼 데이터에서 어떤 토큰을 유지한다는 것을 의미한다고 가정합니다.
탐색 방법에 대한 제안 사항이 있으십니까?
각 색상마다 별도의 페이지와 경로가 있습니까? 그렇다면'request.fullpath'의 값을 검사하여 컨트롤러의 URL을 기반으로 결정을 내리지 않는 이유는 무엇입니까? – Alireza
기본값을 사용하는 것은 어떨까요? http://guides.rubyonrails.org/v2.3.11/routing.html#defining-defaults, 컨트롤러에서 처리 할 수 있기 때문에 도움이 될 것 같아요. 그것이 실제로 도움이되는지 알려주세요, 나는 결코 사용하지 않으므로 호기심이 생깁니다. 그래서 당신의 경우 :'''get/blue-signup ','users # new ', defaults : {color :'blue '}''' –
알리 : 최고 일 것입니다. – hoverbikes