token_redis_session_store 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0a8c13418ee51a1e0a0a550e74176057ad1f3cf8b67c1996d53efc0729651154
|
4
|
+
data.tar.gz: 92e2cbc9d305f143b34d22a74e41ba68be1cf6071092792c7ec1918e1c57bb11
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: adc8d351ef5b871125d0891e9db48e9ae9b6589b63685d915845454b07a7a5abfe6c5096f9b1cdb25f60a76a0199e05a786bc19f8ede5d8e6dca75b3b3339d47
|
7
|
+
data.tar.gz: 3995c2c6703e0b690b594d0fe1f853f05dc1417d28935ad427f0f7d011090560a30016f9c3aeb2d7cc93e4dbfac74aa84645c1ec64314c9964592b42c8d59d7f
|
data/Gemfile.lock
CHANGED
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'redis'
|
2
|
+
|
3
|
+
module ActionDispatch
|
4
|
+
module Session
|
5
|
+
class TokenRedisStore < ActionDispatch::Session::AbstractStore
|
6
|
+
def initialize(app, options = {})
|
7
|
+
redis_options = options[:redis] || {}
|
8
|
+
@session_header = options[:session_header] || 'Session-Id'
|
9
|
+
@redis = Redis.new(redis_options)
|
10
|
+
options[:defer] = true
|
11
|
+
super
|
12
|
+
end
|
13
|
+
|
14
|
+
# Get a session from the cache.
|
15
|
+
def find_session(_req, sid)
|
16
|
+
unless sid && (session = parse_session(sid))
|
17
|
+
sid = generate_sid
|
18
|
+
session = {}
|
19
|
+
end
|
20
|
+
[sid, session]
|
21
|
+
end
|
22
|
+
|
23
|
+
# Set a session in the cache.
|
24
|
+
def write_session(_req, sid, session, options)
|
25
|
+
unless session.nil?
|
26
|
+
if options[:expire_after].nil?
|
27
|
+
redis.set(sid, session.to_json)
|
28
|
+
else
|
29
|
+
redis.setex(sid, options[:expire_after], session.to_json)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
sid
|
33
|
+
end
|
34
|
+
|
35
|
+
# Remove a session from the cache.
|
36
|
+
def delete_session(req, sid, _session)
|
37
|
+
req.delete_header "HTTP_#{@session_header.sub('-', '_').upcase}"
|
38
|
+
redis.del(sid)
|
39
|
+
generate_sid
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
attr_reader :redis
|
45
|
+
|
46
|
+
def extract_session_id(req)
|
47
|
+
req.get_header "HTTP_#{@session_header.sub('-', '_').upcase}"
|
48
|
+
end
|
49
|
+
|
50
|
+
def parse_session(sid)
|
51
|
+
(entry = redis.get(sid)) ? JSON.parse(entry) : nil
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -1,56 +1 @@
|
|
1
|
-
require '
|
2
|
-
require "token_redis_session_store/version"
|
3
|
-
|
4
|
-
module TokenRedisSessionStore
|
5
|
-
# Token Redis session storage that uses redis and
|
6
|
-
# passes the sessionid on an http header instead of cookie
|
7
|
-
class TokenRedisStore < ActionDispatch::Session::AbstractStore
|
8
|
-
def initialize(app, options = {})
|
9
|
-
redis_options = options[:redis] || {}
|
10
|
-
@session_header = options[:session_header] || 'Session-Id'
|
11
|
-
@redis = Redis.new(redis_options)
|
12
|
-
options[:defer] = true
|
13
|
-
super
|
14
|
-
end
|
15
|
-
|
16
|
-
# Get a session from the cache.
|
17
|
-
def find_session(_req, sid)
|
18
|
-
unless sid && (session = parse_session(sid))
|
19
|
-
sid = generate_sid
|
20
|
-
session = {}
|
21
|
-
end
|
22
|
-
[sid, session]
|
23
|
-
end
|
24
|
-
|
25
|
-
# Set a session in the cache.
|
26
|
-
def write_session(_req, sid, session, options)
|
27
|
-
unless session.nil?
|
28
|
-
if options[:expire_after].nil?
|
29
|
-
redis.set(sid, session.to_json)
|
30
|
-
else
|
31
|
-
redis.setex(sid, options[:expire_after], session.to_json)
|
32
|
-
end
|
33
|
-
end
|
34
|
-
sid
|
35
|
-
end
|
36
|
-
|
37
|
-
# Remove a session from the cache.
|
38
|
-
def delete_session(req, sid, _session)
|
39
|
-
req.delete_header "HTTP_#{@session_header.sub('-', '_').upcase}"
|
40
|
-
redis.del(sid)
|
41
|
-
generate_sid
|
42
|
-
end
|
43
|
-
|
44
|
-
private
|
45
|
-
|
46
|
-
attr_reader :redis
|
47
|
-
|
48
|
-
def extract_session_id(req)
|
49
|
-
req.get_header "HTTP_#{@session_header.sub('-', '_').upcase}"
|
50
|
-
end
|
51
|
-
|
52
|
-
def parse_session(sid)
|
53
|
-
(entry = redis.get(sid)) ? JSON.parse(entry) : nil
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
1
|
+
require 'action_dispatch/session/token_redis_store'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: token_redis_session_store
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- enewbury
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-05-
|
11
|
+
date: 2019-05-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -133,6 +133,7 @@ files:
|
|
133
133
|
- Rakefile
|
134
134
|
- bin/console
|
135
135
|
- bin/setup
|
136
|
+
- lib/action_dispatch/session/token_redis_store.rb
|
136
137
|
- lib/token_redis_session_store.rb
|
137
138
|
- lib/token_redis_session_store/version.rb
|
138
139
|
- token_redis_session_store.gemspec
|