官术网_书友最值得收藏!

How it works…

Once we run the program, the HTTP server will start locally listening on port 8080.

Next, we will execute a couple of commands to see how the session works.

First, we will access /home by executing the following command:

$ curl -X GET http://localhost:8080/home

This will result in an unauthorized access message from the server as shown in the following screenshot:

This is because we first have to log in to an application, which will create a session ID that the server will validate before providing access to any web page. So, let's log in to the application:

$ curl -X GET -i http://localhost:8080/login

Executing the previous command will give us the Cookie, which has to be set as a request header to access any web page:

Once the previous command is executed, a Cookie will be created and saved in Redis, which you can see by executing the command from redis-cli or in the Redis Browser, as shown in the following screenshot:

Next, we will use the Cookie provided to access /home, as follows:

$ curl --cookie "session-name=MTUyMzEwNDUyM3xOd3dBTkV4T1JrdzNURFkyUkVWWlQxWklUekpKVUVOWE1saFRUMHBHVTB4T1RGVXlSRU5RVkZWWk5VeFNWVmRPVVZSQk4wTk1RMUU9fAlGgLGU-OHxoP78xzEHMoiuY0Q4rrbsXfajSS6HiJAm;" http://localhost:8080/home

This results in the Home Page as a response from the server:

Let's understand the changes we introduced in this recipe:

  1. Using var store *redisStore.RediStore, we declared a private RediStore to store sessions in Redis.
  2. Next, we updated the init() function to create NewRediStore with a size and maximum number of idle connections as 10, and assigned it to the store. If there is an error while creating a store, then we log the error and exit with a status code of 1.
  3. Finally, we updated main() to introduce the defer store.Close() statement, which closes the Redis store once we return from the function.
主站蜘蛛池模板: 浦东新区| 尤溪县| 泾阳县| 武威市| 资溪县| 绵阳市| 万州区| 津南区| 宁安市| 临沂市| 偃师市| 红原县| 贵港市| 含山县| 武陟县| 双桥区| 云南省| 安庆市| 麟游县| 南乐县| 江北区| 武功县| 扶余县| 郯城县| 库车县| 黑山县| 白银市| 赤城县| 濮阳县| 西安市| 历史| 杭锦后旗| 滕州市| 炎陵县| 英山县| 东乌珠穆沁旗| 离岛区| 远安县| 额济纳旗| 洛隆县| 永寿县|