Create redis session engine

This commit is contained in:
Eden Kirin
2023-10-25 10:56:38 +02:00
parent c7955104ae
commit 7fdf131d53
5 changed files with 79 additions and 15 deletions

View File

@ -10,13 +10,6 @@ import (
)
type configStruct struct {
Database struct {
Host string `yaml:"host"`
Port string `yaml:"port"`
Name string `yaml:"name"`
Username string `yaml:"username"`
Password string `yaml:"password" json:"-"`
} `yaml:"database"`
Application struct {
SecretKey string `yaml:"secretKey" json:"-"`
LogLevel string `yaml:"logLevel"`
@ -27,6 +20,21 @@ type configStruct struct {
IsProduction bool `yaml:"isProduction"`
LoopDelay uint32 `yaml:"loopDelay"`
} `yaml:"application"`
Database struct {
Host string `yaml:"host"`
Port string `yaml:"port"`
Name string `yaml:"name"`
Username string `yaml:"username"`
Password string `yaml:"password" json:"-"`
} `yaml:"database"`
Redis struct {
Host string `yaml:"host"`
Port int `yaml:"port"`
Username string `yaml:"username"`
Password string `yaml:"password" json:"-"`
Database string `yaml:"database"`
Prefix string `yaml:"prefix"`
} `yaml:"redis"`
SMTP struct {
Host string `yaml:"host"`
Port int `yaml:"port"`
@ -81,6 +89,7 @@ func Init() {
maskedCfg := Config
maskedCfg.Database.Password = "**password hidden**"
maskedCfg.Redis.Password = "**password hidden**"
maskedCfg.SMTP.Password = "**password hidden**"
maskedCfg.Application.SecretKey = "**secret key hidden**"

View File

@ -1,16 +1,53 @@
package main
import (
"fmt"
"iris-test/app/cfg"
"iris-test/app/db"
"iris-test/app/logging"
"iris-test/app/views"
"time"
"github.com/kataras/iris/v12"
"github.com/kataras/iris/v12/sessions"
"github.com/kataras/iris/v12/sessions/sessiondb/redis"
)
var redisDB *redis.Database
func createSessionEngine() *sessions.Sessions {
redisAddr := fmt.Sprintf("%s:%d", cfg.Config.Redis.Host, cfg.Config.Redis.Port)
redisDB = redis.New(redis.Config{
Network: "tcp",
Addr: redisAddr,
Timeout: time.Duration(30) * time.Second,
MaxActive: 10,
Username: cfg.Config.Redis.Username,
Password: cfg.Config.Redis.Password,
Database: cfg.Config.Redis.Database,
Prefix: cfg.Config.Redis.Prefix,
Driver: redis.GoRedis(), // defaults to this driver.
// To set a custom, existing go-redis client, use the "SetClient" method:
// Driver: redis.GoRedis().SetClient(customGoRedisClient)
})
sessions_engine := sessions.New(sessions.Config{
Cookie: "_session_id",
Expires: 0, // defaults to 0: unlimited life. Another good value is: 45 * time.Minute,
AllowReclaim: true,
CookieSecureTLS: true,
})
sessions_engine.UseDatabase(redisDB)
return sessions_engine
}
func createApp() *iris.Application {
sessions_engine := createSessionEngine()
app := iris.New()
app.Use(sessions_engine.Handler())
app.RegisterView(iris.Jet("./app/templates", ".jet").Reload(true))
views.CreateRouter(app)
return app
@ -22,5 +59,6 @@ func main() {
db.InitDB()
app := createApp()
defer redisDB.Close()
app.Listen(":8000")
}