定制omniauth gem页面

时间:2013-03-06 08:17:51

标签: ruby-on-rails ruby omniauth

我使用omniath-identity gem作为身份验证系统。我向Gemfile添加gem。我还为omniauth配置设置了omniauth.rb文件。

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :identity
end

我浏览以下链接。

http://localhost:3000/auth/identity

它显示了omniauth-identity的登录页面。我想创建自己的cstom登录页面。我不想看到omniauth的登录页面。如何删除或更改此页面以及如何添加自定义登录页面?

提前致谢。

1 个答案:

答案 0 :(得分:0)

关于使用omniauth-identity有一个很好的铁路广播,您应该在http://railscasts.com/episodes/304-omniauth-identity?view=asciicast上查看

但简单来说,为了覆盖登录页面,您需要创建一个名为身份的控制器

rails g controller identities

内容将类似

class IdentitiesController < ApplicationController
  def new
    @identity = env['omniauth.identity']
  end
end

然后您可以创建自定义视图

<h1>New Account</h1>

<%= form_tag "/auth/identity/register" do %>
  <% if @identity && @identity.errors.any? %>
    <div class="error_messages">
      <h2><%= pluralize(@identity.errors.count, "error") %> prohibited this account from being saved:</h2>
      <ul>
      <% @identity.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>
  <div class="field">
    <%= label_tag :name %><br>
    <%= text_field_tag :name, @identity.try(:name) %>
  </div>
  <div class="field">
    <%= label_tag :email %><br>
    <%= text_field_tag :email, @identity.try(:email) %>
  </div>
  <div class="field">
    <%= label_tag :password %><br>
    <%= password_field_tag :password %>
  </div>
  <div class="field">
    <%= label_tag :password_confirmation %><br>
    <%= password_field_tag :password_confirmation %>
  </div>
  <div class="actions"><%= submit_tag "Register" %></div>
<% end %>

只需检查一下轨道视频,一切都在那里