Fixes up issue #698.
The input of `decodeCookieValue` is tested in case of there is an empty string, so then its output really reflect the validity of the input.
It takes in consideration that underlying decoder can unvalidate the cookie.
Former-commit-id: a82cccfe1c252c68ceeb4126ea43495fa2cdf96d
- Restore expiration state of the sessions
- Add APIs to modify expire date
- Free the timer for the session destroy task
Former-commit-id: 4d796a9efba2c37cd3750275ac62c068ceb82be8
**Sessions were re-written **
- Developers can use more than one 'session database', at the same time,
to store the sessions
- Easy to develop a custom session database (only two functions are
required (Load & Update)), [learn
more](https://github.com/iris-contrib/sessiondb/blob/master/redis/database.go)
- Session databases are located
[here](https://github.com/iris-contrib/sessiondb), contributions are
welcome
- The only frontend deleted 'thing' is the: **config.Sessions.Provider**
- No need to register a database, the sessions works out-of-the-box
- No frontend/API changes except the
`context.Session().Set/Delete/Clear`, they doesn't return errors
anymore, btw they (errors) were always nil :)
- Examples (master branch) were updated.
```sh
$ go get github.com/iris-contrib/sessiondb/$DATABASE
```
```go
db := $DATABASE.New(configurationHere{})
iris.UseSessionDB(db)
```
> Note: Book is not updated yet, examples are up-to-date as always.