If session.Start(nil, w, r) is called twice in the same handler func, the second one will generate a new session id because of the cookie store returns false if the cookie does not exist. It breaks the cookie signature validation because the first session id is overwritten by second one.
All other store backends like redis store or in-memory store do not have such problem