From cb0ecc4194a1b36ef2620ef983d3eaeb417fe2c8 Mon Sep 17 00:00:00 2001 From: xxq250 Date: Tue, 30 Apr 2024 15:35:35 +0800 Subject: [PATCH] =?UTF-8?q?fixed=20=E5=A4=9A=E6=B5=8F=E8=A7=88=E5=99=A8?= =?UTF-8?q?=E9=80=80=E5=87=BA=E8=B4=A6=E5=8F=B7=E6=97=B6=EF=BC=8Ctoken?= =?UTF-8?q?=E4=B8=8D=E5=AD=98=E5=9C=A8=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/application_controller.rb | 41 +++++++++++------------ app/models/token.rb | 40 +++++++++++----------- 2 files changed, 40 insertions(+), 41 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 0c134a3bd..bf2fb85c1 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -318,19 +318,19 @@ class ApplicationController < ActionController::Base User.current = find_current_user uid_logger("user_setup: " + (User.current.logged? ? "#{User.current.try(:login)} (id=#{User.current.try(:id)})" : "anonymous")) - # 开放课程通过链接访问的用户 - if !User.current.logged? && !params[:chinaoocTimestamp].blank? && !params[:websiteName].blank? && !params[:chinaoocKey].blank? - content = "#{OPENKEY}#{params[:websiteName]}#{params[:chinaoocTimestamp]}" - - if Digest::MD5.hexdigest(content) == params[:chinaoocKey] - user = open_class_user - if user - start_user_session(user) - set_autologin_cookie(user) - end - User.current = user - end - end + # # 开放课程通过链接访问的用户 + # if !User.current.logged? && !params[:chinaoocTimestamp].blank? && !params[:websiteName].blank? && !params[:chinaoocKey].blank? + # content = "#{OPENKEY}#{params[:websiteName]}#{params[:chinaoocTimestamp]}" + # + # if Digest::MD5.hexdigest(content) == params[:chinaoocKey] + # user = open_class_user + # if user + # start_user_session(user) + # set_autologin_cookie(user) + # end + # User.current = user + # end + # end if !User.current.logged? && Rails.env.development? user = User.find 1 @@ -363,15 +363,14 @@ class ApplicationController < ActionController::Base uid_logger("user setup start: session[:user_id] is #{session[:user_id]}") uid_logger("0000000000000user setup start: default_yun_session is #{default_yun_session}, session[:current_user_id] is #{session[:"#{default_yun_session}"]}") current_domain_session = session[:"#{default_yun_session}"] - if current_domain_session - # existing session - User.current = (User.active.find(current_domain_session) rescue nil) - elsif autologin_user = try_to_autologin - autologin_user - elsif params[:format] == 'atom' && params[:key] && request.get? && accept_rss_auth? - # RSS key authentication does not start a session - User.find_by_rss_key(params[:key]) + autologin_user = try_to_autologin + uid_logger("user setup start: autologin_user is #{autologin_user}") + # 多浏览器退出账号时,token不存在处理 + if current_domain_session && autologin_user.nil? + autologin_user = (User.active.find(current_domain_session) rescue nil) + set_autologin_cookie(autologin_user) end + autologin_user end def try_to_autologin diff --git a/app/models/token.rb b/app/models/token.rb index fac516eb8..7d65f32a3 100644 --- a/app/models/token.rb +++ b/app/models/token.rb @@ -1,19 +1,19 @@ -# == Schema Information -# -# Table name: tokens -# -# id :integer not null, primary key -# user_id :integer default("0"), not null -# action :string(30) default(""), not null -# value :string(40) default(""), not null -# created_on :datetime not null -# -# Indexes -# -# index_tokens_on_user_id (user_id) -# tokens_value (value) UNIQUE -# - +# == Schema Information +# +# Table name: tokens +# +# id :integer not null, primary key +# user_id :integer default("0"), not null +# action :string(30) default(""), not null +# value :string(40) default(""), not null +# created_on :datetime not null +# +# Indexes +# +# index_tokens_on_user_id (user_id) +# tokens_value (value) UNIQUE +# + # # This program is free software; you can redistribute it and/or @@ -44,7 +44,7 @@ class Token < ActiveRecord::Base def self.get_or_create_permanent_login_token(user, type) token = Token.get_token_from_user(user, type) - Rails.logger.info "###### Token.get_token_from_user result: #{token&.value}" + Rails.logger.info "###### Token.get_token_from_user time:#{Time.new.to_i}, result: #{token&.value}" unless token token = Token.create(:user => user, :action => type) Rails.logger.info "###### Token.get_token_from_user is nul and agine create token: #{token&.value}" @@ -117,8 +117,8 @@ class Token < ActiveRecord::Base # Removes obsolete tokens (same user and action) def delete_previous_tokens - if user - Token.where(['user_id = ? AND action = ?', user.id, action]).delete_all - end + # if user + # Token.where(['user_id = ? AND action = ?', user.id, action]).delete_all + # end end end