gpt4 book ai didi

ruby-on-rails - 用户在 rails 中注册时创建 session

转载 作者:行者123 更新时间:2023-12-03 15:56:55 25 4
gpt4 key购买 nike

你好 ,

我对 rails 应用程序中的注册功能有一些疑问 (2.3.10)

在我的意见/用户/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>

在我的用户 Controller 中
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

在我的用户模型中
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

在我的 session Controller 中 - 创建方法
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

当我提交注册页面时,用户正在创建,但 session 未创建
所以它没有指向博客/主页,因为它在博客 Controller 中有 before_filter :login_required ..

如何解决这个问题
我的代码没有包含经过身份验证的系统行

最佳答案

session[:id] = @current_user.id

关于ruby-on-rails - 用户在 rails 中注册时创建 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5082097/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com