0

我尝试了rails guide并进行了很多搜索,但可以找到答案。我正在尝试使用脚手架生成器在 Rails 4 中生成秘密后脚手架

场景是:用户可以创建秘密帖子,他们将来会得到一个带有秘密令牌的链接,它用作验证字符串

rails g scaffold secret title:string content:text token:string

我想在所有“secret_posts”路由中附加该令牌值

例如:

: secret/1/sadkljaldjlak 

: secret/1/edit/sasadadallkha


我想将该令牌用作验证的唯一代码。任何帮助表示赞赏

4

2 回答 2

0

您应该能够通过单独指定路由来做到这一点,如下所示:

 get 'secret/:id/:token' => 'secret#show' #or whatever action

在该控制器操作中,您可以确保令牌与 id 匹配。

但是您应该知道这并不安全,该 url 将存储在浏览器历史记录中,并且如果该页面具有外部链接,其他站点将可以看到该网址

于 2013-07-17T12:32:39.087 回答
0

首先,创建一个迁移到机会令牌:字符串到令牌:文本,然后使用 SecureRamdom.urlsafe_base64 生成令牌,在您的模型上使用此代码:

def secret_token
   if self.new_record?
     self.token = SecureRandom.urlsafe_base64
   end
end

之后,您可以创建这样的路线:

get   'secret/:edit_hash/edit',        to: 'secret#edit', as: :secret_offer
patch 'secret/:edit_hash',             to: 'secret#update'
put   'secret/:edit_hash',             to: 'secret#update'

在你的控制器上:

def edit
  @secret = Secret.find_by!(edit_hash: params[:edit_hash])
  your code..
end

def create
  @secret = Secret.find_by!(edit_hash: params[:edit_hash])
  your code..
end

希望这有帮助

于 2013-07-17T14:18:42.487 回答