首页
/ devise-passkeys 的安装和配置教程

devise-passkeys 的安装和配置教程

2025-05-26 21:14:21作者:幸俭卉

项目基础介绍

devise-passkeys 是一个为Ruby on Rails应用程序提供使用passkeys(密码密钥)替代传统密码进行用户认证的Devise扩展。它轻量级且几乎无需配置,专注于实现核心功能,同时允许开发者根据需要手动实现额外的细节。

本项目主要使用的编程语言是Ruby,同时涉及到一些HTML和Shell脚本的使用。

项目使用的关键技术和框架

  • Devise: 一个为Rails应用提供全面、可扩展的认证解决方案的框架。
  • WebAuthn: 一个旨在提供基于公钥加密的用户认证的互联网标准。
  • RelyingParty: WebAuthn的一个概念,指的是使用WebAuthn协议的服务端实体。

准备工作

在开始安装之前,请确保您的开发环境满足以下要求:

  • Ruby环境已安装并配置正确。
  • Rails框架已安装。
  • 您的系统中已安装并配置了数据库(如PostgreSQL、MySQL等)。
  • 您有一个基本的Rails应用程序框架。

安装步骤

  1. 添加依赖

    在您的Rails应用程序的Gemfile中添加devise-passkeys依赖:

    gem 'devise-passkeys'
    

    然后,执行以下命令安装依赖:

    $ bundle install
    
  2. 更新模型

    您需要确保您的用户模型包含了webauthn_id字段,并为该字段创建唯一索引。此外,还需要为您的用户模型添加has_many :passkeys关联。

    $ rails g migration AddWebauthnIdToUsers webauthn_id:string:index:uniq
    

    运行迁移来更新数据库:

    $ rails db:migrate
    
  3. 生成Passkey模型

    使用以下命令生成用于存储passkeys的模型:

    $ rails g model Passkey user:references label:string external_id:string:index:uniq public_key:string:index sign_count:integer last_used_at:datetime
    

    同样,运行迁移来创建相应的数据库表:

    $ rails db:migrate
    
  4. 修改用户模型

    在您的用户模型中,添加以下代码:

    devise :passkey_authenticatable, ...
    has_many :passkeys
    

    并定义相关的方法:

    def self.passkeys_class
      Passkey
    end
    
    def self.find_for_passkey(passkey)
      self.find_by(id: passkey.user.id)
    end
    
  5. 定制控制器和视图

    由于Devise尚未内置passkeys支持,您需要定制控制器和视图。生成控制器和视图的命令如下:

    $ rails generate devise:controllers users
    $ rails generate devise:views users
    

    然后,根据您的需要修改这些控制器和视图。

  6. 添加路由

    在您的config/routes.rb文件中,设置定制的路由:

    devise_for :users, controllers: {
      registrations: 'users/registrations',
      sessions: 'users/sessions'
    }
    
    devise_scope :user do
      # ... 添加相关路由
    end
    
  7. 重新实现:passkey_authenticatable模块

    您将需要重新实现Devise的:passkey_authenticatable模块,以指向您的特定控制器和路由。

以上步骤为您提供了一个基本的devise-passkeys安装和配置流程。根据您的具体需求,可能还需要进行一些额外的配置和代码定制。

登录后查看全文
热门项目推荐