ActionController::InvalidAuthenticityToken in LoginController

View: New views
5 Messages — Rating Filter:   Alert me  

ActionController::InvalidAuthenticityToken in LoginController

by ddemichele :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Hi,

I'm having a problem trying to get a login controller working. When I
try and post to my login controller I get the following error:

 ActionController::InvalidAuthenticityToken in LoginController#login

login_controller:

class LoginController < ApplicationController
def login
    case request.method
      when :post
        if @session['user'] = User.authenticate(@params['username'],
@params['password'])

          flash['notice']  = "Login successful"
          redirect_back_or_default :action => "welcome"
        else
          @login    = @params['username']
          @message  = "Login unsuccessful"
          redirect_to :action=> "login"
      end
    end
  end
.....

login.html.erb:

  <div id="login">
    <h1>Please Login</h1>

    <form method="post" action="">
      <p><label for="user_login">Username</label>
        <%= text_field "user", "username", :class => 'textbox', :value
=> '', :maxlength => 40 %></p>
      <p><label for="user_password">Password</label>
        <%= password_field "user", "password", :class =>
'textbox', :value => '', :maxlength => 40 %></p>
      <p class="buttons">
        <%= submit_tag 'Login', :class => 'button' %>
      </p>
    </form>
</div>

User.rb

class User < ActiveRecord::Base

  def self.authenticate(login, pass)
    User.find(:first, :conditions =>["username = ? AND password = ?",
login, sha1(pass)])
  end

  def change_password(pass)
    update_attribute "password", self.class.sha1(pass)
  end

  protected

  def self.sha1(pass)
    Digest::SHA1.hexdigest("somedigest")
  end

  before_create :crypt_password

  def crypt_password
    write_attribute("password", self.class.sha1(password))
  end

  validates_length_of :login, :within => 3..40
  validates_length_of :password, :within => 5..40
  validates_presence_of :login, :password, :password_confirmation
  validates_uniqueness_of :login, :on => :create
  validates_confirmation_of :password, :on => :create
end

I have the :secret and :session_key set in the environment.rb

Does anyone have any ideas?


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@...
To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe@...
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---


Re: ActionController::InvalidAuthenticityToken in LoginController

by Jean-François Trân-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


2008/1/16, Double <ddemichele@...>:

> I'm having a problem trying to get a login controller working. When I
> try and post to my login controller I get the following error:
>
>  ActionController::InvalidAuthenticityToken in LoginController#login

[...]

> login.html.erb:
>
>   <div id="login">
>     <h1>Please Login</h1>
>
>     <form method="post" action="">
>       <p><label for="user_login">Username</label>
>         <%= text_field "user", "username", :class => 'textbox', :value
> => '', :maxlength => 40 %></p>
>       <p><label for="user_password">Password</label>
>         <%= password_field "user", "password", :class =>
> 'textbox', :value => '', :maxlength => 40 %></p>
>       <p class="buttons">
>         <%= submit_tag 'Login', :class => 'button' %>
>       </p>
>     </form>
> </div>

You should use the token_tag helper in your form to provide
the secret token needed by Rails for CSRF security reasons.

   -- Jean-François.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@...
To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe@...
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---


Re: ActionController::InvalidAuthenticityToken in LoginController

by ddemichele :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Are you saying that is the problem or are you making that suggestion
for simply security reasons?

On Jan 15, 10:15 pm, "Jean-François Trân" <jft...@...>
wrote:

> 2008/1/16, Double <ddemich...@...>:
>
> > I'm having a problem trying to get a login controller working. When I
> > try and post to my login controller I get the following error:
>
> >  ActionController::InvalidAuthenticityToken in LoginController#login
>
> [...]
>
>
>
> > login.html.erb:
>
> >   <div id="login">
> >     <h1>Please Login</h1>
>
> >     <form method="post" action="">
> >       <p><label for="user_login">Username</label>
> >         <%= text_field "user", "username", :class => 'textbox', :value
> > => '', :maxlength => 40 %></p>
> >       <p><label for="user_password">Password</label>
> >         <%= password_field "user", "password", :class =>
> > 'textbox', :value => '', :maxlength => 40 %></p>
> >       <p class="buttons">
> >         <%= submit_tag 'Login', :class => 'button' %>
> >       </p>
> >     </form>
> > </div>
>
> You should use the token_tag helper in your form to provide
> the secret token needed by Rails for CSRF security reasons.
>
>    -- Jean-François.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@...
To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe@...
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---


Re: ActionController::InvalidAuthenticityToken in LoginController

by ddemichele :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Forget it - got it. Thank you for the help. This worked like a charm.

<%= token_tag %>

On Jan 15, 10:22 pm, Double <ddemich...@...> wrote:

> Are you saying that is the problem or are you making that suggestion
> for simply security reasons?
>
> On Jan 15, 10:15 pm, "Jean-François Trân" <jft...@...>
> wrote:
>
> > 2008/1/16, Double <ddemich...@...>:
>
> > > I'm having a problem trying to get a login controller working. When I
> > > try and post to my login controller I get the following error:
>
> > >  ActionController::InvalidAuthenticityToken in LoginController#login
>
> > [...]
>
> > > login.html.erb:
>
> > >   <div id="login">
> > >     <h1>Please Login</h1>
>
> > >     <form method="post" action="">
> > >       <p><label for="user_login">Username</label>
> > >         <%= text_field "user", "username", :class => 'textbox', :value
> > > => '', :maxlength => 40 %></p>
> > >       <p><label for="user_password">Password</label>
> > >         <%= password_field "user", "password", :class =>
> > > 'textbox', :value => '', :maxlength => 40 %></p>
> > >       <p class="buttons">
> > >         <%= submit_tag 'Login', :class => 'button' %>
> > >       </p>
> > >     </form>
> > > </div>
>
> > You should use the token_tag helper in your form to provide
> > the secret token needed by Rails for CSRF security reasons.
>
> >    -- Jean-François.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@...
To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe@...
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---


Re: ActionController::InvalidAuthenticityToken in LoginController

by Bzouchir :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


HI I'm having that same exact problem while following "rails
solutions" book excercises.

the difference is that I'm still new to RoR that i couldn't get it to
work with <%= token_tag %>
didn't find much on the net either.

where should i add this tag and how is it used? is there any extra
params to add to it?

in my view I have:
<%= form_tag({:controller => 'user', :action => 'login'},{:id
=>"login_form"})%>
                                <label for="user_login">Login:</label><br />
                                <%= text_field :user, :login %><br />
                                <label for="user_login">Password:</label><br />
                                <%= password_field :user, :password%><br />
                                <%= submit_tag 'Login' %>
                        <% $end %>

this happened after I uncommented in environment.rb and restarted the
server
config.action_controller.session_store = :active_record_store

if it worked for you please help me out on that one.
cheers.


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@...
To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe@...
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---