`

自己写的rails登录界面

 
阅读更多
rails g controller users new
rails g model user email:string password_hash:string password_salt:string
rake db:migrate
rails dbconsole
rails g controller sessions new
Gemfile
gem "bcrypt-ruby", :require => "bcrypt"
models/user.rb
class User < ActiveRecord::Base
  attr_accessible :email, :password, :password_confirmation
  
  attr_accessor :password
  before_save :encrypt_password
  
  validates_confirmation_of :password
  validates_presence_of :password, :on => :create
  validates_presence_of :email
  validates_uniqueness_of :email
  
  def self.authenticate(email, password)
    user = find_by_email(email)
    if user && user.password_hash == BCrypt::Engine.hash_secret(password, user.password_salt)
      user
    else
      nil
    end
  end
  
  def encrypt_password
    if password.present?
      self.password_salt = BCrypt::Engine.generate_salt
      self.password_hash = BCrypt::Engine.hash_secret(password, password_salt)
    end
  end
end
users_controller.rb
def new
  @user = User.new
end

def create
  @user = User.new(params[:user])
  if @user.save
    redirect_to root_url, :notice => "Signed up!"
  else
    render "new"
  end
end
sessions_controller.rb
def new
end

def create
  user = User.authenticate(params[:email], params[:password])
  if user
    session[:user_id] = user.id
    redirect_to root_url, :notice => "Logged in!"
  else
    flash.now.alert = "Invalid email or password"
    render "new"
  end
end

def destroy
  session[:user_id] = nil
  redirect_to root_url, :notice => "Logged out!"
end
application_controller.rb
helper_method :current_user

private

def current_user
  @current_user ||= User.find(session[:user_id]) if session[:user_id]
end
routes.rb
get "log_out" => "sessions#destroy", :as => "log_out"
get "log_in" => "sessions#new", :as => "log_in"
get "sign_up" => "users#new", :as => "sign_up"
root :to => "users#new"
resources :users
resources :sessions
users/new.html.erb
<h1>Sign Up</h1>

<%= form_for @user do |f| %>
  <% if @user.errors.any? %>
    <div class="error_messages">
      <h2>Form is invalid</h2>
      <ul>
        <% for message in @user.errors.full_messages %>
          <li><%= message %></li>
        <% end %>
      </ul>
    </div>
  <% end %>
  <p>
    <%= f.label :email %><br />
    <%= f.text_field :email %>
  </p>
  <p>
    <%= f.label :password %><br />
    <%= f.password_field :password %>
  </p>
  <p>
    <%= f.label :password_confirmation %><br />
    <%= f.password_field :password_confirmation %>
  </p>
  <p class="button"><%= f.submit %></p>
<% end %>
sessions/new.html.erb
<h1>Log in</h1>

<%= form_tag sessions_path do %>
  <p>
    <%= label_tag :email %><br />
    <%= text_field_tag :email, params[:email] %>
  </p>
  <p>
    <%= label_tag :password %><br />
    <%= password_field_tag :password %>
  </p>
  <p class="button"><%= submit_tag "Log in" %></p>
<% end %>
layouts/application.html.erb
<div id="user_nav">
  <% if current_user %>
    Logged in as <%= current_user.email %>.
    <%= link_to "Log out", log_out_path %>
  <% else %>
    <%= link_to "Sign up", sign_up_path %> or
    <%= link_to "log in", log_in_path %>
  <% end %>
</div>

<% flash.each do |name, msg| %>
  <%= content_tag :div, msg, :id => "flash_#{name}" %>
<% end %>
分享到:
评论

相关推荐

    rails登陆画面(原)

    标题“rails登陆画面(原)”暗示我们关注的是Ruby on Rails框架中的登录界面实现。Rails是基于Ruby语言的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,用于构建数据驱动的Web应用。在这个场景中,...

    WPF高仿qq登陆界面

    【WPF高仿QQ登陆界面】是一个基于Windows Presentation Foundation(WPF)技术的项目,用于创建一个与腾讯QQ登录界面类似的用户界面。WPF是.NET Framework的一个重要组件,专为构建具有丰富图形、多媒体和交互性的...

    ror-codelit-landing:基于 ruby​​ on rails 的登陆页面

    【ror-codelit-landing:基于 Ruby on Rails 的登陆页面】是一个使用 Ruby on Rails 框架构建的项目,旨在创建一个简洁而功能完备的登录界面。Ruby on Rails(简称 RoR)是用 Ruby 语言编写的开源 web 开发框架,它...

    登陆注册模版

    在IT行业中,网页设计是至关重要的一个环节,尤其对于用户界面(UI)和用户体验(UX)而言。本主题聚焦于“登录注册模板”,这是一种常见的前端设计元素,广泛应用于各种网站和服务中,以提供用户友好的入口点。下面我们...

    Flixter:双向视频流市场平台,具有信用卡支付功能,用户角色管理,复杂的用户界面和高级数据库关系。 使用Stripe集成Javascript,JSON,Ajax请求和安全支付功能。 HTML5,CSS,Ruby,Rails,算法,Javascript

    Flixter-视频流平台双向视频流市场平台,具有信用卡支付功能,用户角色管理,复杂的用户界面和高级数据库关系。 使用Stripe集成Javascript,JSON,Ajax请求和安全支付功能。 HTML5,CSS,Ruby,Rails,算法,...

    MVC实现登陆

    视图是用户界面的呈现部分,负责显示模型的数据。在用户登录过程中,视图可能会包含登录表单,用于收集用户的登录信息,如用户名和密码输入框,以及提交按钮。当用户成功登录后,视图可能会更新来展示已登录用户的...

    Flash注册登陆 后台asp

    在IT行业中,Flash曾是一种广泛应用于网页设计和交互开发的技术,尤其在创建动态用户界面和动画方面表现出色。然而,随着HTML5的兴起和Flash的退役,这些技术已逐渐淡出主流。尽管如此,理解Flash注册登陆和后台ASP...

    一个后台登陆(HTML模板).rar

    【标题】中的“一个后台登陆(HTML模板).rar”表明这是一个HTML模板,主要用于构建后台登录界面。HTML(HyperText Markup Language)是网页制作的基础语言,它定义了网页的结构和内容。HTML模板则是预设计好的HTML...

    Triplocal_landing_site:triplocal 的登陆页面项目

    【标题】:“Triplocal_landing_site: triplocal 的登陆页面项目” 该项目名为“Triplocal_landing_site”,专注于创建一个用于triplocal服务的登录页面。它由两个关键组件组成,一个是服务器端,另一个是客户端,...

    Gitlab代码管理仓库1

    Gitlab是一个基于RoR(Ruby on Rails)框架的代码管理工具,提供了一个私有的仓库Web管理界面。 Gitlab可以看作是一个私有的Github,而Github是一个世界级的公开的GitLab。 Gitlab的优势在于它提供了一个图形化的...

    Landing-page-Bike-Shop:在React + Bootstrap中创建一个登陆页面

    该项目是通过引导的。 您将在下面找到一些有关如何执行...Ruby on Rails 在开发中代理API请求 配置代理后出现“无效的主机头”错误 手动配置代理 配置WebSocket代理 在开发中使用HTTPS 在服务器上生成动态&lt;met

    超级漂亮的前端后端管理模板-Quixlab

    这款模板专为那些希望提升其后台管理系统界面体验的开发者和设计师打造,旨在提供一个既美观又高效的开发框架。 Quixlab的核心特性在于其优秀的用户界面(UI)设计。UI设计是任何应用或网站成功的关键因素,因为它...

    基于Android的学生宿舍管理系统的实现.doc

    为了实现客户端与服务器之间的数据交互,系统采用Ruby on Rails框架进行服务端开发,设计了以下几个关键的API接口: - **用户认证接口**:用于用户登录时的身份验证。 - **按楼号读取宿舍列表接口**:根据楼号获取...

    taximatico_website:Taximatico 登陆页面代码和托管

    这个项目的源码提供了对登录界面设计和功能实现的深入理解。下面将详细解析该项目的构建过程和关键技术。 首先,为了运行此项目,我们需要确保安装了 Ruby 的特定版本,即 2.1.2。Ruby 是一种面向对象的编程语言,...

    pagame-org:这是针对那些没有银行账户来管理和操作数字化货币的应用程序的着陆页

    "表明该应用有一个用户界面,用户可以通过这个登陆页面访问和使用其服务。登陆页面通常是用户与应用程序交互的第一步,因此它需要设计得直观、易于理解和使用,以便用户能快速注册或登录到他们的账户。 【标签】...

Global site tag (gtag.js) - Google Analytics