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(其中的端口号根据自己的配置决定。),应该看到下面的结果:

     

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

     

    登录成功后:
     

  • 相关阅读:
    20165308实验三 敏捷开发与XP实践实验报告
    20165308 《Java程序设计》第9周学习总结
    20165308 四则运算2
    20165308 实验二 Java面向对象程序设计
    20165308第八周学习总结
    20165308课上补做
    20165308 结队训练
    20165308《Java程序设计》第7周学习总结
    2018-2019-1 20165320 《信息安全系统设计基础》第七周学习总结
    2018-2019-1 20165320 《信息安全系统设计基础》第六周学习总结
  • 原文地址:https://www.cnblogs.com/dahuzizyd/p/ruby_rails_dotnet_windows_study_16.html
Copyright © 2011-2022 走看看