Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
B
beego
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
go
beego
Commits
c8f86652
Commit
c8f86652
authored
Nov 05, 2013
by
astaxie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix #248
parent
076bd0b4
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
56 additions
and
0 deletions
+56
-0
sess_file.go
session/sess_file.go
+9
-0
sess_mem.go
session/sess_mem.go
+10
-0
sess_mysql.go
session/sess_mysql.go
+12
-0
sess_redis.go
session/sess_redis.go
+9
-0
session.go
session/session.go
+16
-0
No files found.
session/sess_file.go
View file @
c8f86652
...
...
@@ -116,6 +116,15 @@ func (fp *FileProvider) SessionRead(sid string) (SessionStore, error) {
return
ss
,
nil
}
func
(
fp
*
FileProvider
)
SessionExist
(
sid
string
)
bool
{
_
,
err
:=
os
.
Stat
(
path
.
Join
(
fp
.
savePath
,
string
(
sid
[
0
]),
string
(
sid
[
1
]),
sid
))
if
err
==
nil
{
return
true
}
else
{
return
false
}
}
func
(
fp
*
FileProvider
)
SessionDestroy
(
sid
string
)
error
{
os
.
Remove
(
path
.
Join
(
fp
.
savePath
))
return
nil
...
...
session/sess_mem.go
View file @
c8f86652
...
...
@@ -87,6 +87,16 @@ func (pder *MemProvider) SessionRead(sid string) (SessionStore, error) {
return
nil
,
nil
}
func
(
pder
*
MemProvider
)
SessionExist
(
sid
string
)
bool
{
pder
.
lock
.
RLock
()
defer
pder
.
lock
.
RUnlock
()
if
_
,
ok
:=
pder
.
sessions
[
sid
];
ok
{
return
true
}
else
{
return
false
}
}
func
(
pder
*
MemProvider
)
SessionRegenerate
(
oldsid
,
sid
string
)
(
SessionStore
,
error
)
{
pder
.
lock
.
RLock
()
if
element
,
ok
:=
pder
.
sessions
[
oldsid
];
ok
{
...
...
session/sess_mysql.go
View file @
c8f86652
...
...
@@ -110,6 +110,18 @@ func (mp *MysqlProvider) SessionRead(sid string) (SessionStore, error) {
return
rs
,
nil
}
func
(
mp
*
MysqlProvider
)
SessionExist
(
sid
string
)
bool
{
c
:=
mp
.
connectInit
()
row
:=
c
.
QueryRow
(
"select session_data from session where session_key=?"
,
sid
)
var
sessiondata
[]
byte
err
:=
row
.
Scan
(
&
sessiondata
)
if
err
==
sql
.
ErrNoRows
{
return
false
}
else
{
return
true
}
}
func
(
mp
*
MysqlProvider
)
SessionRegenerate
(
oldsid
,
sid
string
)
(
SessionStore
,
error
)
{
c
:=
mp
.
connectInit
()
row
:=
c
.
QueryRow
(
"select session_data from session where session_key=?"
,
oldsid
)
...
...
session/sess_redis.go
View file @
c8f86652
...
...
@@ -145,6 +145,15 @@ func (rp *RedisProvider) SessionRead(sid string) (SessionStore, error) {
return
rs
,
nil
}
func
(
rp
*
RedisProvider
)
SessionExist
(
sid
string
)
bool
{
c
:=
rp
.
poollist
.
Get
()
if
str
,
err
:=
redis
.
String
(
c
.
Do
(
"HGET"
,
sid
,
sid
));
err
!=
nil
||
str
==
""
{
return
false
}
else
{
return
true
}
}
func
(
rp
*
RedisProvider
)
SessionRegenerate
(
oldsid
,
sid
string
)
(
SessionStore
,
error
)
{
c
:=
rp
.
poollist
.
Get
()
if
str
,
err
:=
redis
.
String
(
c
.
Do
(
"HGET"
,
oldsid
,
oldsid
));
err
!=
nil
||
str
==
""
{
...
...
session/session.go
View file @
c8f86652
...
...
@@ -25,6 +25,7 @@ type SessionStore interface {
type
Provider
interface
{
SessionInit
(
maxlifetime
int64
,
savePath
string
)
error
SessionRead
(
sid
string
)
(
SessionStore
,
error
)
SessionExist
(
sid
string
)
bool
SessionRegenerate
(
oldsid
,
sid
string
)
(
SessionStore
,
error
)
SessionDestroy
(
sid
string
)
error
SessionAll
()
int
//get all active session
...
...
@@ -133,7 +134,22 @@ func (manager *Manager) SessionStart(w http.ResponseWriter, r *http.Request) (se
r
.
AddCookie
(
cookie
)
}
else
{
sid
,
_
:=
url
.
QueryUnescape
(
cookie
.
Value
)
if
manager
.
provider
.
SessionExist
(
sid
)
{
session
,
_
=
manager
.
provider
.
SessionRead
(
sid
)
}
else
{
sid
=
manager
.
sessionId
(
r
)
session
,
_
=
manager
.
provider
.
SessionRead
(
sid
)
cookie
=
&
http
.
Cookie
{
Name
:
manager
.
cookieName
,
Value
:
url
.
QueryEscape
(
sid
),
Path
:
"/"
,
HttpOnly
:
true
,
Secure
:
manager
.
secure
}
if
manager
.
maxage
>=
0
{
cookie
.
MaxAge
=
manager
.
maxage
}
http
.
SetCookie
(
w
,
cookie
)
r
.
AddCookie
(
cookie
)
}
}
return
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment