zoukankan      html  css  js  c++  java
  • Ruby on rails开发从头来(windows)(十六)登录

    现在我们的购物车程序为两种用户提供了服务,一类是普通用户,一类是管理员。两类用户分别有不同的功能。上次我们又实现了添加用户的功能,这次我们来实现登录的功能。

     

    1.         login_controller添加login方法。

    上次使用rails的命令行生成的login_controller中已经包含了login方法,下面修改该方法的内容:

    def login

    if request.get?

    session[:user_id] = nil

    @user = User.new

    else

    @user = User.new(params[:user])

    logged_in_user = @user.try_to_login

    if logged_in_user

    session[:user_id] = logged_in_user.id

    redirect_to(:action => "index")

    else

    flash[:notice] = "Invalid user/password combination"

    end

    end

    end

    2.         在上面的方法中看到调用了user.try_to_login方法,下面我们就要在user.rb文件中添加该方法:

    def self.login(name, password)

    hashed_password = hash_password(password || "")

    find(:first,

    :conditions => ["name = ? and hashed_password = ?",

    name, hashed_password])

    end

    def try_to_login

    User.login(self.name, self.password)

    end

    在这个方法里我们判断hash_password是不是匹配。

    3.         现在我们来添加一个index页面,用在用户登录后显示订单信息。在views\login目录下,添加一个index.rhtml文件,内容如下:

    <% @page_title = "Administer your Store" -%>

    <h1>Depot Store Status</h1>

    <p>

           Total orders in system: <%= @total_orders %>

    </p>

    <p>

           Orders pending shipping: <%= @pending_orders %>

    </p>

    4.         当然我们还要在login_controller里再添加一个actionindex,内容入下:

    def index

    @total_orders = Order.count

    @pending_orders = Order.count_pending

    end

    里面又调用了Order.count Order.count_pending,就还要修改order.rb文件,内容如下:

    def self.count_pending

    count("shipped_at is null")

    end

    5.         最后我们还差一个login的页面,下面创建一个login.rhtml,放在views\login目录下,其内容为:

    <%= form_tag %>

           <table>

                         <tr>

                                       <td>User name:</td>

                                       <td><%= text_field("user", "name") %></td>

                         </tr>

                         <tr>

                                       <td>Password:</td>

                                       <td><%= password_field("user", "password") %></td>

                         </tr>

                         <tr>

                                       <td></td>

                                       <td><input type="submit" value=" LOGIN " /></td>

                         </tr>

           </table>

    <%= end_form_tag %>

    6.         OK了,下面来看看结果,在浏览器中访问http://localhost:3003/login/login(其中的端口号根据自己的配置决定。),应该看到下面的结果:

     

    输入的用户名或密码不正确的情况:

     

    登录成功后:
     

  • 相关阅读:
    PHP中有多态么
    【Android】九宫格实现
    采用xshell链路本地虚拟机Linux
    读取资源文件的工具.
    dede织梦背景经常使用标签
    PHP第三个教训 PHP基本数据类型
    Linux经常使用的命令(必看)
    易Android登录Demo
    [2013山东ACM]省赛 The number of steps (可能DP,数学期望)
    web开发性能优化---UI接口章
  • 原文地址:https://www.cnblogs.com/dahuzizyd/p/ruby_rails_dotnet_windows_study_16.html
Copyright © 2011-2022 走看看