2013-03-06 78 views
1

我使用omniath-identity gem認證系統。我將Gem添加到Gemfile中。我也爲omniauth配置設置了omniauth.rb文件。定製omniauth寶石頁面

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

我瀏覽下面的鏈接。

http://localhost:3000/auth/identity 

它顯示我omniauth身份的登錄頁面。我想創建自己的cstom登錄頁面。我不想看到omniauth的登錄頁面。我如何刪除或更改此頁面,以及如何添加自定義登錄頁面?

在此先感謝。

回答

0

有關於使用omniauth認同一個不錯的railcasts,你應該檢查它http://railscasts.com/episodes/304-omniauth-identity?view=asciicast

但在幾句話,以覆蓋登錄頁面,你需要創建一個名爲控制器身份

rails g controller identities 

內容會像

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

,然後你可以CR eate自定義視圖

<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 %> 

只是檢查railcast視頻,一切都在那裏

+0

感謝答覆。我也想問一個問題。我讀過你說的文章。我們使用兩個控制器:身份和會話。我只在我的項目上使用身份提供者。我可以在不使用會話控制器的情況下管理omniauth。那麼,我可以使用identities_controller的創建操作而不是sessions_controller嗎? – miyamotomusashi 2013-03-06 08:56:58

+0

您可以覆蓋身份控制器的所有行爲,只需記住更新routes.rb文件,如身份控制器的文章中所述(否則它將路由到隨gem附帶的控制器)。如果這解決了您的問題/問題,我將不勝感激對我的回答的積極投票,如果您可以將答案標記爲已接受,那麼可以提高我的評分並幫助我獲得更好的合同,thx。 – rorra 2013-03-06 09:06:28