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登陆画面(原)”暗示我们关注的是Ruby on Rails框架中的登录界面实现。Rails是基于Ruby语言的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,用于构建数据驱动的Web应用。在这个场景中,...
【WPF高仿QQ登陆界面】是一个基于Windows Presentation Foundation(WPF)技术的项目,用于创建一个与腾讯QQ登录界面类似的用户界面。WPF是.NET Framework的一个重要组件,专为构建具有丰富图形、多媒体和交互性的...
【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,算法,...
视图是用户界面的呈现部分,负责显示模型的数据。在用户登录过程中,视图可能会包含登录表单,用于收集用户的登录信息,如用户名和密码输入框,以及提交按钮。当用户成功登录后,视图可能会更新来展示已登录用户的...
在IT行业中,Flash曾是一种广泛应用于网页设计和交互开发的技术,尤其在创建动态用户界面和动画方面表现出色。然而,随着HTML5的兴起和Flash的退役,这些技术已逐渐淡出主流。尽管如此,理解Flash注册登陆和后台ASP...
【标题】中的“一个后台登陆(HTML模板).rar”表明这是一个HTML模板,主要用于构建后台登录界面。HTML(HyperText Markup Language)是网页制作的基础语言,它定义了网页的结构和内容。HTML模板则是预设计好的HTML...
【标题】:“Triplocal_landing_site: triplocal 的登陆页面项目” 该项目名为“Triplocal_landing_site”,专注于创建一个用于triplocal服务的登录页面。它由两个关键组件组成,一个是服务器端,另一个是客户端,...
Gitlab是一个基于RoR(Ruby on Rails)框架的代码管理工具,提供了一个私有的仓库Web管理界面。 Gitlab可以看作是一个私有的Github,而Github是一个世界级的公开的GitLab。 Gitlab的优势在于它提供了一个图形化的...
该项目是通过引导的。 您将在下面找到一些有关如何执行...Ruby on Rails 在开发中代理API请求 配置代理后出现“无效的主机头”错误 手动配置代理 配置WebSocket代理 在开发中使用HTTPS 在服务器上生成动态<met
这款模板专为那些希望提升其后台管理系统界面体验的开发者和设计师打造,旨在提供一个既美观又高效的开发框架。 Quixlab的核心特性在于其优秀的用户界面(UI)设计。UI设计是任何应用或网站成功的关键因素,因为它...
为了实现客户端与服务器之间的数据交互,系统采用Ruby on Rails框架进行服务端开发,设计了以下几个关键的API接口: - **用户认证接口**:用于用户登录时的身份验证。 - **按楼号读取宿舍列表接口**:根据楼号获取...
这个项目的源码提供了对登录界面设计和功能实现的深入理解。下面将详细解析该项目的构建过程和关键技术。 首先,为了运行此项目,我们需要确保安装了 Ruby 的特定版本,即 2.1.2。Ruby 是一种面向对象的编程语言,...
"表明该应用有一个用户界面,用户可以通过这个登陆页面访问和使用其服务。登陆页面通常是用户与应用程序交互的第一步,因此它需要设计得直观、易于理解和使用,以便用户能快速注册或登录到他们的账户。 【标签】...