身份验证,无法通过登录页面

时间:2013-06-30 14:23:18

标签: ruby-on-rails-3

我尝试在数据库的密码下创建后端,我无法通过登录页面:P

我的AdminController

class Backend::AdminController < ApplicationController

    layout :layout
    before_filter :authorize, :except => :login

    def authorize
        if session[:backend] != true
            redirect_to backend_login_path
        end
    end

    private
    def layout
        if session[:backend] == true
            "admin"
        else
            "login"
        end
    end

    def login
        employee = Employee.authenticate(params[:name], params[:password])
        if employee
            session[:backend] = true
            redirect_to backend_root_path, :notice => "Logged in!"
        else
            flash.now.alert = "Invalid login"
        end
    end

    def logout
        session[:backend] = nil
        redirect_to backend_login_path, :notice => "Logged out!"
    end

end

我的路线

match "backend/login" => "backend/admin#login"
match "backend/logout" => "backend/admin#logout"

我的登录页面

<% flash.each do |name, msg| %>
  <%= content_tag :div, msg, :id => "flash_#{name}" %>
<% end %>   
<h1>Log in</h1>

<%= form_tag backend_login_path do %>
  <p>
    <%= label_tag :name %><br />
    <%= text_field_tag :name, params[:name] %>
  </p>
  <p>
    <%= label_tag :password %><br />
    <%= password_field_tag :password %>
  </p>
  <p class="button"><%= submit_tag "Log in" %></p>
<% end %>

当我继续将url / backend重定向到/ backend / login时,这是正确的 当我进入良好的登录或糟糕的登录没有发生任何事情和没有闪烁出现那奇怪? 从webserver控制台输出,我看到POST信息通过登录方法..我不知道有什么问题?谢谢

编辑:当我尝试转到URL / backend / logout im getting

Unknown action

    The action 'logout' could not be found for Backend::AdminController

我真的不明白这一点:(即时通讯

1 个答案:

答案 0 :(得分:1)

rails中的一个约定是,控制器中的公共方法被认为是操作。

如果您想为before_filter等编写方法,请将它们设为privateprotected,以便rails不会将它们作为操作公开。

另一方面,您无法将操作定义为private