mirror of
https://github.com/astaxie/beego.git
synced 2025-06-25 03:10:19 +00:00
remove pkg directory;
remove build directory; remove githook directory;
This commit is contained in:
.travis.ymldoc.go
adapter
admin.goapp.gobeego.gobuild_info.gopolicy.gorouter.go
cache
config.goconfig
context
controller.godoc.goerror.gofilter.goflash.gofs.gograce
httplib
log.gologs
metric
migration
namespace.goorm
cmd.godb.godb_alias.gomodels.gomodels_boot.gomodels_fields.goorm.goorm_conds.goorm_log.goorm_queryset.goqb.goqb_mysql.goqb_tidb.goquery_setter_adapter.gotypes.goutils.goutils_test.go
plugins
apiauth
auth
authz
cors
session
couchbase
ledis
memcache
mysql
postgres
provider_adapter.goredis
redis_cluster
redis_sentinel
sess_cookie.gosess_cookie_test.gosess_file.gosess_file_test.gosess_mem.gosess_mem_test.gosess_test.gosess_utils.gosession.gossdb
store_adapter.goswagger
template.gotemplatefunc.gotemplatefunc_test.gotesting
toolbox
tree.gotree_test.goutils
caller.gocaller_test.go
captcha
debug.godebug_test.gofile.gomail.gomail_test.gopagination
rand.gorand_test.gosafemap.gosafemap_test.goslice.goslice_test.goutils.govalidation
build
build_info.goclient
cache
httplib
orm
README.mdcmd.gocmd_utils.godb.godb_alias.godb_alias_test.godb_mysql.godb_oracle.godb_postgres.godb_sqlite.godb_tables.godb_tidb.godb_utils.godo_nothing_orm.godo_nothing_orm_test.gofilter.gofilter_orm_decorator.gofilter_orm_decorator_test.gofilter_test.go
filter
bean
opentracing
prometheus
hints
invocation.gomigration
model_utils_test.gomodels.gomodels_boot.gomodels_fields.gomodels_info_f.gomodels_info_m.gomodels_test.gomodels_utils.gomodels_utils_test.goorm.goorm_conds.goorm_log.goorm_object.goorm_querym2m.goorm_queryset.goorm_raw.goorm_test.goqb.goqb_mysql.goqb_postgres.goqb_tidb.gotypes.goutils.goutils_test.gocore
bean
context.godoc.gofactory.gometadata.gotag_auto_wire_bean_factory.gotag_auto_wire_bean_factory_test.gotime_type_adapter.gotime_type_adapter_test.gotype_adapter.go
config
governor
logs
README.mdaccess_log.goaccess_log_test.go
alils
alils.goconfig.golog.pb.golog_config.golog_project.golog_store.gomachine_group.gorequest.gosignature.go
conn.goconn_test.goconsole.goconsole_test.goes
file.gofile_test.goformatter.goformatter_test.gojianliao.gojianliao_test.golog.golog_msg.golog_msg_test.golog_test.gologger.gologger_test.gomultifile.gomultifile_test.goslack.gosmtp.gosmtp_test.goutils
caller.gocaller_test.godebug.godebug_test.gofile.gofile_test.gokv.gokv_test.gomail.gomail_test.go
pagination
rand.gorand_test.gosafemap.gosafemap_test.goslice.goslice_test.gotestdata
time.goutils.goutils_test.govalidation
githook
pkg/adapter/logs
server/web
LICENSEadmin.goadmin_controller.goadmin_test.goadminui.gobeego.gofilter_chain_test.gofilter_test.goflash.goflash_test.gofs.go
captcha
config.goconfig_test.gocontext
acceptencoder.goacceptencoder_test.gocontext.gocontext_test.goinput.goinput_test.gooutput.go
controller.gocontroller_test.godoc.goerror.goerror_test.gofilter.goparam
renderer.goresponse.gofilter
apiauth
auth
authz
cors
opentracing
prometheus
grace
hooks.gomime.gonamespace.gonamespace_test.gopagination
parser.gopolicy.gorouter.gorouter_test.goserver.goserver_test.gosession
README.md
staticfile.gostaticfile_test.gostatistics.gostatistics_test.gocouchbase
ledis
memcache
mysql
postgres
redis
redis_cluster
redis_sentinel
sess_cookie.gosess_cookie_test.gosess_file.gosess_file_test.gosess_mem.gosess_mem_test.gosess_test.gosess_utils.gosession.gossdb
swagger
template.gotemplate_test.gotemplatefunc.gotemplatefunc_test.gotree.gotree_test.gounregroute_test.gotask
121
adapter/session/redis_sentinel/sess_redis_sentinel.go
Normal file
121
adapter/session/redis_sentinel/sess_redis_sentinel.go
Normal file
@ -0,0 +1,121 @@
|
||||
// Copyright 2014 beego Author. All Rights Reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
// Package redis for session provider
|
||||
//
|
||||
// depend on github.com/go-redis/redis
|
||||
//
|
||||
// go install github.com/go-redis/redis
|
||||
//
|
||||
// Usage:
|
||||
// import(
|
||||
// _ "github.com/astaxie/beego/session/redis_sentinel"
|
||||
// "github.com/astaxie/beego/session"
|
||||
// )
|
||||
//
|
||||
// func init() {
|
||||
// globalSessions, _ = session.NewManager("redis_sentinel", ``{"cookieName":"gosessionid","gclifetime":3600,"ProviderConfig":"127.0.0.1:26379;127.0.0.2:26379"}``)
|
||||
// go globalSessions.GC()
|
||||
// }
|
||||
//
|
||||
// more detail about params: please check the notes on the function SessionInit in this package
|
||||
package redis_sentinel
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
|
||||
"github.com/astaxie/beego/adapter/session"
|
||||
|
||||
sentinel "github.com/astaxie/beego/server/web/session/redis_sentinel"
|
||||
)
|
||||
|
||||
// DefaultPoolSize redis_sentinel default pool size
|
||||
var DefaultPoolSize = sentinel.DefaultPoolSize
|
||||
|
||||
// SessionStore redis_sentinel session store
|
||||
type SessionStore sentinel.SessionStore
|
||||
|
||||
// Set value in redis_sentinel session
|
||||
func (rs *SessionStore) Set(key, value interface{}) error {
|
||||
return (*sentinel.SessionStore)(rs).Set(context.Background(), key, value)
|
||||
}
|
||||
|
||||
// Get value in redis_sentinel session
|
||||
func (rs *SessionStore) Get(key interface{}) interface{} {
|
||||
return (*sentinel.SessionStore)(rs).Get(context.Background(), key)
|
||||
}
|
||||
|
||||
// Delete value in redis_sentinel session
|
||||
func (rs *SessionStore) Delete(key interface{}) error {
|
||||
return (*sentinel.SessionStore)(rs).Delete(context.Background(), key)
|
||||
}
|
||||
|
||||
// Flush clear all values in redis_sentinel session
|
||||
func (rs *SessionStore) Flush() error {
|
||||
return (*sentinel.SessionStore)(rs).Flush(context.Background())
|
||||
}
|
||||
|
||||
// SessionID get redis_sentinel session id
|
||||
func (rs *SessionStore) SessionID() string {
|
||||
return (*sentinel.SessionStore)(rs).SessionID(context.Background())
|
||||
}
|
||||
|
||||
// SessionRelease save session values to redis_sentinel
|
||||
func (rs *SessionStore) SessionRelease(w http.ResponseWriter) {
|
||||
(*sentinel.SessionStore)(rs).SessionRelease(context.Background(), w)
|
||||
}
|
||||
|
||||
// Provider redis_sentinel session provider
|
||||
type Provider sentinel.Provider
|
||||
|
||||
// SessionInit init redis_sentinel session
|
||||
// savepath like redis sentinel addr,pool size,password,dbnum,masterName
|
||||
// e.g. 127.0.0.1:26379;127.0.0.2:26379,100,1qaz2wsx,0,mymaster
|
||||
func (rp *Provider) SessionInit(maxlifetime int64, savePath string) error {
|
||||
return (*sentinel.Provider)(rp).SessionInit(context.Background(), maxlifetime, savePath)
|
||||
}
|
||||
|
||||
// SessionRead read redis_sentinel session by sid
|
||||
func (rp *Provider) SessionRead(sid string) (session.Store, error) {
|
||||
s, err := (*sentinel.Provider)(rp).SessionRead(context.Background(), sid)
|
||||
return session.CreateNewToOldStoreAdapter(s), err
|
||||
}
|
||||
|
||||
// SessionExist check redis_sentinel session exist by sid
|
||||
func (rp *Provider) SessionExist(sid string) bool {
|
||||
res, _ := (*sentinel.Provider)(rp).SessionExist(context.Background(), sid)
|
||||
return res
|
||||
}
|
||||
|
||||
// SessionRegenerate generate new sid for redis_sentinel session
|
||||
func (rp *Provider) SessionRegenerate(oldsid, sid string) (session.Store, error) {
|
||||
s, err := (*sentinel.Provider)(rp).SessionRegenerate(context.Background(), oldsid, sid)
|
||||
return session.CreateNewToOldStoreAdapter(s), err
|
||||
}
|
||||
|
||||
// SessionDestroy delete redis session by id
|
||||
func (rp *Provider) SessionDestroy(sid string) error {
|
||||
return (*sentinel.Provider)(rp).SessionDestroy(context.Background(), sid)
|
||||
}
|
||||
|
||||
// SessionGC Impelment method, no used.
|
||||
func (rp *Provider) SessionGC() {
|
||||
(*sentinel.Provider)(rp).SessionGC(context.Background())
|
||||
}
|
||||
|
||||
// SessionAll return all activeSession
|
||||
func (rp *Provider) SessionAll() int {
|
||||
return (*sentinel.Provider)(rp).SessionAll(context.Background())
|
||||
}
|
90
adapter/session/redis_sentinel/sess_redis_sentinel_test.go
Normal file
90
adapter/session/redis_sentinel/sess_redis_sentinel_test.go
Normal file
@ -0,0 +1,90 @@
|
||||
package redis_sentinel
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"testing"
|
||||
|
||||
"github.com/astaxie/beego/adapter/session"
|
||||
)
|
||||
|
||||
func TestRedisSentinel(t *testing.T) {
|
||||
sessionConfig := &session.ManagerConfig{
|
||||
CookieName: "gosessionid",
|
||||
EnableSetCookie: true,
|
||||
Gclifetime: 3600,
|
||||
Maxlifetime: 3600,
|
||||
Secure: false,
|
||||
CookieLifeTime: 3600,
|
||||
ProviderConfig: "127.0.0.1:6379,100,,0,master",
|
||||
}
|
||||
globalSessions, e := session.NewManager("redis_sentinel", sessionConfig)
|
||||
if e != nil {
|
||||
t.Log(e)
|
||||
return
|
||||
}
|
||||
// todo test if e==nil
|
||||
go globalSessions.GC()
|
||||
|
||||
r, _ := http.NewRequest("GET", "/", nil)
|
||||
w := httptest.NewRecorder()
|
||||
|
||||
sess, err := globalSessions.SessionStart(w, r)
|
||||
if err != nil {
|
||||
t.Fatal("session start failed:", err)
|
||||
}
|
||||
defer sess.SessionRelease(w)
|
||||
|
||||
// SET AND GET
|
||||
err = sess.Set("username", "astaxie")
|
||||
if err != nil {
|
||||
t.Fatal("set username failed:", err)
|
||||
}
|
||||
username := sess.Get("username")
|
||||
if username != "astaxie" {
|
||||
t.Fatal("get username failed")
|
||||
}
|
||||
|
||||
// DELETE
|
||||
err = sess.Delete("username")
|
||||
if err != nil {
|
||||
t.Fatal("delete username failed:", err)
|
||||
}
|
||||
username = sess.Get("username")
|
||||
if username != nil {
|
||||
t.Fatal("delete username failed")
|
||||
}
|
||||
|
||||
// FLUSH
|
||||
err = sess.Set("username", "astaxie")
|
||||
if err != nil {
|
||||
t.Fatal("set failed:", err)
|
||||
}
|
||||
err = sess.Set("password", "1qaz2wsx")
|
||||
if err != nil {
|
||||
t.Fatal("set failed:", err)
|
||||
}
|
||||
username = sess.Get("username")
|
||||
if username != "astaxie" {
|
||||
t.Fatal("get username failed")
|
||||
}
|
||||
password := sess.Get("password")
|
||||
if password != "1qaz2wsx" {
|
||||
t.Fatal("get password failed")
|
||||
}
|
||||
err = sess.Flush()
|
||||
if err != nil {
|
||||
t.Fatal("flush failed:", err)
|
||||
}
|
||||
username = sess.Get("username")
|
||||
if username != nil {
|
||||
t.Fatal("flush failed")
|
||||
}
|
||||
password = sess.Get("password")
|
||||
if password != nil {
|
||||
t.Fatal("flush failed")
|
||||
}
|
||||
|
||||
sess.SessionRelease(w)
|
||||
|
||||
}
|
Reference in New Issue
Block a user