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

View File

@ -6,11 +6,11 @@ module LoginHelper
end
def autologin_cookie_name
edu_setting('autologin_cookie_name').presence || 'autologin'
edu_setting('autologin_cookie_name').presence || 'autologin_forge_military'
end
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 = {
:value => token.value,
:expires => 1.month.from_now,

View File

@ -141,7 +141,7 @@ class UsersController < ApplicationController
def sync_token
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])
render_ok
end

View File

@ -50,7 +50,7 @@ class Token < ActiveRecord::Base
# Delete all expired tokens
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
# Returns the active user who owns the key for the given action

View File

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