Skip to content

starJammer/gorilla-sessions-arangodb

master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 

Gorilla Session Arangodb

This small library will allow you to use arango db to store user sessions in a document collection.

First create the collection that you want to store the sessions in. You can use arangosh to do this:

db._create( 'sessions', {
    
    //You don't need this. Actually, make this false if you want sessions to persist across database restarts
    "isVolatile": true,

    //AllowUserKeys can be false too. This library lets arangodb to decide session keys right now by using the autogenerated _key
    //attribute. In the future maybe I'll add an option to allow creation from the library side
    "allowUserKeys": true 
}, 'document' )

Now in go code you can save sessions like so:

store, err := NewArangoDbStore(&ArangoDbOptions{
    CollectionName: "sessions", //the name of the collection from above
    Host: "http://localhost:8529", //where to connect to
    DatabaseName: "_system", //the database to use
    User: "root", //user to connect as
    Password: "",
}, []byte("secret-encryption-key-thingy"))

func (f HandlerFunc) ServeHTTP(w ResponseWriter, request *Request) {
    session, err := store.Get( request, "GO_SESS_ID" )
    // Set some session values.
    session.Values["foo"] = "bar"
    session.Values[42] = 43

    session.Save( r, w )
    //OR
    store.Save( r, w, session )
}

The session data will be stored in the collection under the "session-data" key. Sorry, no way for me to switch that key name on the fly right now.

This library also currently relies on another library I'm writing github.com/starJammer/arango. It's a REST API for arangodb written in go. Maybe in the future I will remove this dependency and only use the http package.

About

This is a gorilla Store implementation for the ArangoDB database.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages