Creating sessions when a user logs on rails

Hi

I have some doubts about the registration function in the rails application (2.3.10)

in my views /users/new.html.erb

<div id="signup_form" style="display:none;" class="login-drpdwn "> <% form_for :user, :url => users_path do |f| -%> <%= error_messages_for 'user' %><br/> <div> <p> Enter your name </p> <%= f.text_field :name, :class => "text_box" %> <p> Enter your login name </p> <%= f.text_field :login, :class => "text_box" %> <p> Email ID</p> <%= f.text_field :email, :class => "text_box" %> <p> Password</p> <%= f.password_field :password, :class => "text_box" %> <p> Confirm your password</p> <%= f.password_field :password_confirmation, :class => "text_box" %> <div class="textalign_right"> <input type="submit" value="Submit" class="submit_button rounded_corner"/> </div> </div> <% end %> </div> 

In my user manager

 before_filter :login_required, :except => [:new, :create, :forgot, :reset, :process_forgot_password, :activate] def new @user = User.new end def create @user = User.new(params[:user]) if @user.save redirect_to "/blogs/home",:notice => "signed up" else redirect_to "new" end end 

In my user model

 before_save :encrypt_password attr_protected :id, :password_salt attr_accessor :password, :password_confirmation 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 

In my controller sessions - create a method

 def create @current_user = User.find_by_login(params[:login].downcase) if @current_user.blank? || params[:password] != @current_user.password_hash @current_user = nil render :action => "new" else session[:user_id] = @current_user.id session[:close_time] = 1800.seconds.from_now if @current_user.last_login.nil? @login = LastLogin.new @login.user_id = @current_user.id @login.login_at = Time.now @login.save else @login = @current_user.last_login @login.last_at = @login.login_at @login.login_at = Time.now @login.login_count += 1 @login.save end if session[:return_to] redirect_to session[:return_to], :protocol => USE_PROTOCOL session[:return_to] = nil else end end end 

when I submit the registration page that the user creates, but not the session, therefore it does not direct to the blogs / home page, since it has before_filter: login_required there in the block controller.

how to solve this problem My code does not include an authenticated system string

+4
source share
1 answer
  session [: id] = @ current_user.id
+4
source

Source: https://habr.com/ru/post/1340834/


All Articles