devise tree_如何通过将Devise连接到ROR项目来创建Auth

devise tree

作为Microverse的学生,我已经达到将Rails框架引入我的地步。 对我来说,它似乎是最好的预兆。 Ruby on Rails是许多新兴公司的起点,因为所有人都对它的美观和简单性视而不见。 我不得不承认,我有一段时间感到害怕了。 我当然不能说我们现在是最好的朋友,但是事情开始变得有意义。 Ruby on Rails是根据MVC原理设计的-模型视图控制器。

Devise是Rails的灵活身份验证解决方案

随着事情的发展,在Microverse中进行了4个月的编码后,现在该创建真正的东西了。 但是,等等,它们如何在应用程序中包含用户功能? 凭据保存在哪里,如何在不重新发明轮子的情况下实现呢?

一开始,这些类型的问题一直在我的脑海中浮现。 同学建议我冷静下来,花时间在文档上。 Rails的世界被称为gems的图书馆所环绕。 有什么您能想到的宝石。 在不浪费更多时间的情况下,让我们来看一下设计中的魔术。 让我们一起创建一个Rails 应用程序

rails new devise_gem
rails g scaffold Post post:text
rails db:migrate 
rails s 
  1. 从顶部开始,我们初始化一个名为devise_gem的新Rails应用程序
  2. 我们使用scaffold命令为我们创建所有必要的文件,而不必自己键入所有这些文件。 邮政将成为我们的模型。 您可以根据需要替换它。 文本是我们的模型在数据库中的列类型。
  3. 为我们的应用程序迁移数据库。
  4. 运行服务器。 检查浏览器并确认一切正常。 您应该在localhost:3000中看到Rails的欢迎页面。

应用程序的基本结构已为我们创建。 很好吗?

update routes => config/routes.rb - root'posts#index'
restart the server always after modifying routes files or controllers files
Visit Gemfile in the root folder of your application

默认情况下,已经有许多gems库供您使用。 我们暂时不会处理这些问题。

在一般依赖项中添加devise gem (这意味着可以在组之外的任何位置。是的,您可以将其放在注释之间。也可以在注释上方保留注释,以防忘记这是什么。

[额外提示]:访问rubygems.org 。 从现在开始它将成为您的朋友。

gem ‘devise’

返回终端并捆绑安装,以获取项目中的devise依赖项。

在这一步上,我们需要为我们的应用设置设计。 这很简单,但是请确保您不会错过任何一步。 (做过几次)

rails g devise:install

Devise安装将要求您执行一些额外的步骤。 请一一执行 。 请记住,我们已经设置了路由文件 ,即使它不是devise告诉我们的,也不要感到困惑,因为devise提供了一个示例。 这意味着仅剩3个步骤。

最后,运行完所有命令后,我们还必须再做一次! 现在不要对您所有的抱怨大喊大叫。 由于不同的原因,所有这些都是必需的。

rails g deviseUser

仅此而已 。 您拥有在应用程序中拥有用户功能所需的一切。 从现在开始,一切都与您要使用它的方式有关。 我将向您展示一些基本的知识,但您可以自己进行测试。

访问app / controllers / posts_controller.rb

内部和顶部,我们添加一行:

before_action :authenticate_user!,except : [:index, :show]

这告诉我们的应用程序, un-authenticated用户(即尚未在数据库中注册的用户)只能访问我们的索引显示页面。

默认情况下, devise gem has only email and password as fields 。 如果我们也想拥有其他领域-我们现在要做-我们需要做一些事情。

Create RegistrationsController - (app/controllers/registrations_controller.rb)class RegistrationsController < Devise::RegistrationsController
private
def sign_up_params
 params. require ( :user ).permit( :name , :username , :email , :password , :password_confirmation )
end
def account_update_params
 params. require ( :user ).permit( :name , :username , :email , :password , :password_confirmation , :current_password )
end

然后,我们必须使用控制器( config/routes.rb )更新路由。

devise_for : users, controllers => { registrations: 'registrations' }

接下来,让我们创建一个迁移文件 ,其中包含我们要向用户请求的新字段 。 到目前为止,它们还没有出现在我们的数据库中 ,我们希望将它们包括进来,以防您尚未获得

rails g migration AddFieldsToUser  - CamelCase
rails g migration add_fields_to_user  - snake_case

他们俩的工作完全一样 。 选择更适合您的内容,但在键入时小心。 一切在Rails上都很重要。

检查迁移文件,因为我们要在其中包含一些代码内部 更改方法:

add_column:users , :name , :string
add_column :users , :username , :string
add_index :users , :username , unique: true

您可能已经注意到,自生成脚手架Post模型以来,我们对数据库没有做任何事情。 到目前为止,我们仍在处理用户设置并自行设计配置。 我确定您认为所有这些都太多了,但是确实值得我们花费时间,因为如果我们想自己完成所有这些方法,我们将花费双倍的时间

现在进行迁移的时间:

rails db :migrate

从现在开始,我们在表中具有新字段 ,并且需要更新位于devise文件夹中的视图

app/views/devise/registrations/new.html.erb.

< div class = "field" >
     <%=  f.label :name  %> < br />
     <%=  f.text_field :name , autofocus: true  %> 
  </ div >


  < div class = “field ">
     <%=  f.label :username  %> < br />
     <%=  f.text_field :username  %> 
  </ div >

控制器和模型之间创建关联

app/model/user.rb User  model
has_many :posts
# app/model/post.rb
 Post Model
belongs_to :user

rails g (generate) migration AddUserIdToPosts user_id:integer

迁移文件应如下所示:

def change
    add_column :posts , :user_id , :integer
  end

完成之后,我们必须配置post_controller以与Devise一起使用

def new
 @post = current_user.posts.build
end
def create
 @post = current_user.posts.build(post_params)
end

Devise为我们提供了许多内置方法,例如current_user,is_admin? 等等。您可以在Devise Github存储库中找到所有这些。 ( https://github.com/heartcombo/devise

我知道我已经说过一遍,但是请记住,无论何时对终端中的控制器或路由进行更改以重新启动服务器,始终确保这是一个好主意,以确保现在已将所有更改加载到其中应用程序。 如果您现在尝试创建一个新的帖子,因为这是我们的根页面,您将到达登录页面。 当然, 到目前为止 ,我们还没有创建任何用户 。 如果要进入我们的应用程序并创建一些帖子,请执行此操作!

本文介绍了基本的知识。 我对它的简单性以及Ruby on Rails中逻辑的逻辑性着迷 。 在某些情况下,我想写论文给某人。 如果您还没有尝试过,我强烈建议您花一些时间。

最后但并非最不重要的一点是,与本文的主题完全无关,但是我认为将其作为结论是一个好主意。 请记住,我们的头脑喜欢与我们一起玩游戏。 我们想一次学习一切。 我们正在与他人进行自我比较。 我们感到恐惧。 冒名顶替综合症对我们作为开发人员的生活产生了巨大影响。 Rails可能已经过时,但是如果您擅长于此,肯定会需要它。 选择您的道路并保持专注。

身心健康!

非常感谢我在Microverse的所有同学,当然还有学校本身,因为有机会参与这个伟大的技术社区。

感谢您花时间阅读!

图片来源:Zane Lee

翻译自: https://hackernoon.com/how-to-create-auth-by-connecting-devise-into-your-ror-project-jp2o3ulc

devise tree

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值