30 用户身份验证之使用Devise进行身份验证

在前一章中,我们讨论了如何实现用户注册和登录功能。在这一章中,我们将深入了解如何使用 Devise 进行用户身份验证。Devise 是一个强大的 Ruby on Rails 身份验证解决方案,提供了许多内置功能,可以帮助我们快速实现用户身份验证。

Devise简介

Devise 是一个灵活的身份验证解决方案,可以轻松地集成到 Rails 应用程序中。它提供以下功能:

  • 用户注册
  • 登录和登出
  • 忘记密码和重置密码
  • 会话管理
  • 电子邮件确认
  • 账户锁定

为了使 Devise 在我们的应用程序中生效,我们首先要确保已经安装并设置好 Devise。接下来,我们将一步步实现基于 Devise 的身份验证。

安装 Devise

在你的 Rails 应用程序中,首先需要添加 Devise 到 Gemfile:

1
gem 'devise'

然后,运行以下命令安装 Devise:

1
bundle install

接下来,运行 Devise 的生成器来创建必要的配置文件:

1
rails generate devise:install

这将生成一个配置文件 config/initializers/devise.rb,在这个文件中,你可以配置 Devise 的各种设置。

配置默认网址

devise.rb 文件中,确保设置了默认 URL:

1
config.mailer_sender = 'please-change-me-at-config-initializers-devise@example.com'

同时,确保在 config/environments/development.rbconfig/environments/production.rb 中配置了邮件服务,以便能够发送确认邮件。

生成用户模型

接下来的步骤是生成用户模型。我们可以使用 Devise 的生成器来自动创建一个用户模型,并为其添加身份验证功能:

1
rails generate devise User

这将生成一个用户模型(user.rb),同时还会自动创建迁移文件。在运行迁移之前,确保查看迁移文件并根据需要做出修改,然后运行迁移:

1
rails db:migrate

配置路由

现在,我们需要在 config/routes.rb 文件中设置 Devise 的路由:

1
2
3
4
Rails.application.routes.draw do
devise_for :users
# 其他路由...
end

通过这一步,Devise 会为用户资源自动创建相应的路由,如注册、登录和管理等。

添加视图

Devise 提供了内置的视图,但可以根据需要进行自定义。要生成 Devise 的视图文件,请运行:

1
rails generate devise:views

这将创建 Devise 的视图文件,您可以在 app/views/devise/ 目录中找到它们。您可以根据需要自定义这些视图,例如调整表单样式或添加域。

用户身份验证

一旦完成了上述设置,您就已经有了基本的身份验证功能。您可以在控制器中使用 before_action 来确保某些操作只能由已登录用户访问。

例如,假设您有一个 ArticlesController,希望只有已登录的用户才可以创建文章:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class ArticlesController < ApplicationController
before_action :authenticate_user!, only: [:new, :create]

def new
@article = Article.new
end

def create
@article = Article.new(article_params)
@article.user = current_user

if @article.save
redirect_to @article, notice: '文章创建成功。'
else
render :new
end
end

private

def article_params
params.require(:article).permit(:title, :body)
end
end

在这个控制器中,authenticate_user! 方法会自动重定向未登录的用户到登录页面。

功能测试

完成配置后,您可以通过启动 Rails 服务器(rails server)并访问 /users/sign_up/users/sign_in 来测试您的身份验证。您应该能看到用户注册和登录的页面。

注册和登录功能正常后,您可以开始实现其他用户身份验证相关的功能,比如用户角色管理、授权等。接下来的一章将专注于用户角色管理,这将进一步增强我们的身份验证系统。

总结

通过本章的学习,我们已经成功实现了使用 Devise 的基础用户身份验证功能。我们讨论了 Devise 的安装、配置、用户模型生成、路由设置和视图定制等一系列操作。接下来,您可以利用 Devise 的其他功能,如密码重置和邮箱确认,以提升用户体验。

在下一章中,我们将探讨如何管理用户角色,以便能够为不同的用户提供不同的权限和功能。

30 用户身份验证之使用Devise进行身份验证

https://zglg.work/rails-zero/30/

作者

AI免费学习网(郭震)

发布于

2024-08-15

更新于

2024-08-16

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论