Set Auto Login

This commit is contained in:
sylor_huang@126.com 2020-08-11 11:28:49 +08:00
parent 561b9efd92
commit 1939c0d33f
5 changed files with 26 additions and 22 deletions

View File

@ -256,23 +256,23 @@ class AccountsController < ApplicationController
# UserDayCertification.create(user_id: user.id, status: 1) # UserDayCertification.create(user_id: user.id, status: 1)
end end
def set_autologin_cookie(user) # def set_autologin_cookie(user)
token = Token.get_or_create_permanent_login_token(user, "autologin") # token = Token.get_or_create_permanent_login_token(user, "autologin_forge_military")
cookie_options = { # cookie_options = {
:value => token.value, # :value => token.value,
:expires => 1.month.from_now, # :expires => 1.month.from_now,
:path => '/', # :path => '/',
:secure => false, # :secure => false,
:httponly => true # :httponly => true
} # }
if edu_setting('cookie_domain').present? # if edu_setting('cookie_domain').present?
cookie_options = cookie_options.merge(domain: edu_setting('cookie_domain')) # cookie_options = cookie_options.merge(domain: edu_setting('cookie_domain'))
end # end
cookies[autologin_cookie_name] = cookie_options # cookies[autologin_cookie_name] = cookie_options
cookies.signed[:user_id] ||= user.id # cookies.signed[:user_id] ||= user.id
logger.info("cookies is #{cookies} ======> #{cookies.signed[:user_id]} =====> #{cookies[autologin_cookie_name]}") # logger.info("cookies is #{cookies} ======> #{cookies.signed[:user_id]} =====> #{cookies[autologin_cookie_name]}")
end # end
def logout def logout
Rails.logger.info("########___logout_current_user____________########{current_user.try(:id)}") Rails.logger.info("########___logout_current_user____________########{current_user.try(:id)}")

View File

@ -6,11 +6,11 @@ module LoginHelper
end end
def autologin_cookie_name def autologin_cookie_name
edu_setting('autologin_cookie_name').presence || 'autologin' edu_setting('autologin_cookie_name').presence || 'autologin_forge_military'
end end
def set_autologin_cookie(user) def set_autologin_cookie(user)
token = Token.get_or_create_permanent_login_token(user, "autologin") token = Token.get_or_create_permanent_login_token(user, autologin_cookie_name)
cookie_options = { cookie_options = {
:value => token.value, :value => token.value,
:expires => 1.month.from_now, :expires => 1.month.from_now,

View File

@ -141,7 +141,7 @@ class UsersController < ApplicationController
def sync_token def sync_token
return render_error('未找相关用户!') unless @user return render_error('未找相关用户!') unless @user
token = Token.get_or_create_permanent_login_token(@user, 'autologin') token = Token.get_or_create_permanent_login_token(@user, autologin_cookie_name)
token.update_column(:value, params[:token]) token.update_column(:value, params[:token])
render_ok render_ok
end end

View File

@ -50,7 +50,7 @@ class Token < ActiveRecord::Base
# Delete all expired tokens # Delete all expired tokens
def self.destroy_expired def self.destroy_expired
Token.delete_all ["action NOT IN (?) AND created_on < ?", ['feeds', 'api', 'autologin'], Time.now - @@validity_time] Token.delete_all ["action NOT IN (?) AND created_on < ?", ['feeds', 'api', 'autologin', 'autologin_forge_military'], Time.now - @@validity_time]
end end
# Returns the active user who owns the key for the given action # Returns the active user who owns the key for the given action

View File

@ -123,7 +123,7 @@ class User < ApplicationRecord
# 删除自动登录的token一旦退出下次会提示需要登录 # 删除自动登录的token一旦退出下次会提示需要登录
def delete_autologin_token(value) def delete_autologin_token(value)
Token.where(:user_id => id, :action => 'autologin', :value => value).delete_all Token.where(:user_id => id, :action => autologin_name, :value => value).delete_all
end end
def delete_session_token(value) def delete_session_token(value)
@ -510,7 +510,7 @@ class User < ApplicationRecord
# Returns the user who matches the given autologin +key+ or nil # Returns the user who matches the given autologin +key+ or nil
def self.try_to_autologin(key) def self.try_to_autologin(key)
user = Token.find_active_user('autologin', key) user = Token.find_active_user(autologin_name, key)
user.update(last_login_on: Time.now) if user user.update(last_login_on: Time.now) if user
user user
end end
@ -674,6 +674,10 @@ class User < ApplicationRecord
raise("昵称包含敏感词汇,请重新输入") if nickname && !HarmoniousDictionary.clean?(nickname) raise("昵称包含敏感词汇,请重新输入") if nickname && !HarmoniousDictionary.clean?(nickname)
end end
def autologin_name
EduSetting.get('autologin_cookie_name') || "autologin_forge_military"
end
def set_laboratory def set_laboratory
return unless new_record? return unless new_record?