SSO with Devise and Omniauth Client 项目教程
1. 项目的目录结构及介绍
sso-devise-omniauth-client/
├── app/
│ ├── controllers/
│ ├── models/
│ ├── views/
│ └── ...
├── config/
│ ├── initializers/
│ ├── environments/
│ └── ...
├── db/
│ ├── migrate/
│ └── schema.rb
├── lib/
│ ├── josh_id.rb
│ └── ...
├── public/
├── script/
├── test/
├── vendor/
├── .gitignore
├── Gemfile
├── Gemfile.lock
├── LICENSE
├── README.rdoc
├── Rakefile
└── config.ru
目录结构介绍
- app/: 包含应用程序的主要代码,如控制器、模型和视图。
- config/: 包含应用程序的配置文件,如初始化文件和环境配置。
- db/: 包含数据库迁移文件和模式定义。
- lib/: 包含自定义库和策略文件,如自定义的Omniauth策略。
- public/: 包含静态文件,如图片、CSS和JavaScript文件。
- script/: 包含脚本文件。
- test/: 包含测试文件。
- vendor/: 包含第三方库和插件。
- .gitignore: Git忽略文件。
- Gemfile: 依赖管理文件。
- Gemfile.lock: 依赖锁定文件。
- LICENSE: 许可证文件。
- README.rdoc: 项目说明文档。
- Rakefile: Rake任务定义文件。
- config.ru: Rack配置文件。
2. 项目的启动文件介绍
config.ru
config.ru
是Rack服务器的配置文件,用于启动Rails应用程序。内容如下:
# This file is used by Rack-based servers to start the application.
require ::File.expand_path('../config/environment', __FILE__)
run Rails.application
Rakefile
Rakefile
是Rake任务定义文件,用于定义和管理Rake任务。内容如下:
require File.expand_path('../config/application', __FILE__)
Rails.application.load_tasks
3. 项目的配置文件介绍
config/initializers/omniauth.rb
config/initializers/omniauth.rb
是Omniauth的配置文件,用于配置自定义的Omniauth策略。内容如下:
APP_ID = 'some key'
APP_SECRET = 'some secret'
CUSTOM_PROVIDER_URL = 'http://localhost:3000'
Rails.application.config.middleware.use OmniAuth::Builder do
provider :josh_id, APP_ID, APP_SECRET
end
config/database.yml
config/database.yml
是数据库配置文件,用于配置数据库连接信息。内容如下:
default: &default
adapter: sqlite3
pool: 5
timeout: 5000
development:
<<: *default
database: db/development.sqlite3
test:
<<: *default
database: db/test.sqlite3
production:
<<: *default
database: db/production.sqlite3
config/application.rb
config/application.rb
是应用程序的主要配置文件,包含应用程序的通用配置。内容如下:
require_relative 'boot'
require 'rails/all'
# Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production.
Bundler.require(*Rails.groups)
module SsoDeviseOmniauthClient
class Application < Rails::Application
# Initialize configuration defaults for originally generated Rails version.
config.load_defaults 6.0
# Settings in config/environments/* take precedence over those specified here.
# Application configuration can go into files in config/initializers
# -- all .rb files in that directory are automatically loaded after loading
# the framework and any gems in your application.
end
end
以上是 `SS