Ruby 2.6.0 Неверный токен подлинности - PullRequest
0 голосов
/ 27 января 2019

Мой код показывает «Недопустимая подлинность» вместо «отсутствующий шаблон». Что мне нужно изменить в программе, чтобы получить «ошибку отсутствующего шаблона»? img1 img2 img3 errorImg

Ссылка на всю программу приведена ниже: ссылка на github или

class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception
end

new.html.erb ниже:

Новый вид

<form action="/users" method="post" accept-charset="UTF-8">
  <label for="username">Username:</label><br>
  <input id="username" name="user[username]" type="text" /><br>
  <label for="email">Email:</label><br>
  <input id="email" name="user[email]" type="text" /><br>
  <label for="password">Password:</label><br>
  <input id="password" name="user[password]" type="text" /><br>
  <input type="hidden" name="authenticity_token" value="<%= form_authenticity_token %>"> 
  <input type="submit" value="Submit">
</form>

route.rb

Rails.application.routes.draw do
  resources :users, only: [:new, :create]
end

Ответы [ 2 ]

0 голосов
/ 27 января 2019

Похоже, вы пытаетесь сделать protect_from_forgery с помощью config / application.rb

config.api_only = true

Здесь описана ваша ситуация

Если вы будете использовать свое приложение какAPI, вы должны восстановить его как

$ rails new my_api --api

И если вам нужна дополнительная безопасность, вы можете хранить свои токены в других местах (не куки или сеанс) - например, вы можете использовать токены JWT.Для большей безопасности вы также можете использовать rack-cors gem А если вы случайно удалили ресурсы и не хотите использовать API, вы можете установить для этой конфигурации значение false

0 голосов
/ 27 января 2019

Проблема в этой строке:

 <input type="hidden" name="authenticity_token" value="form_authenticity_token %>">

На самом деле это должно быть:

 <input type="hidden" name="authenticity_token" value="<%= form_authenticity_token %>">

Так как в противном случае токен аутентификации, который используется для предвосхищения мошеннических атак на сайт, будет просто «form_authenticity_token%>» вместо реального токена.

...