Skip to content

Commit 0ba3aab

Browse files
authored
Merge pull request astaxie#933 from invzhi/master
Tweak many details
2 parents ef0d8b5 + abc3961 commit 0ba3aab

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

zh/06.1.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ session机制本身并不复杂,然而其实现和配置上的灵活性却使
103103
如上文所述,session和cookie的目的相同,都是为了克服http协议无状态的缺陷,但完成的方法不同。session通过cookie,在客户端保存session id,而将用户的其他会话消息保存在服务端的session对象中,与此相对的,cookie需要将所有信息都保存在客户端。因此cookie存在着一定的安全隐患,例如本地cookie中保存的用户名密码被破译,或cookie被其他网站收集(例如:1. appA主动设置域B cookie,让域B cookie获取;2. XSS,在appA上通过javascript获取document.cookie,并传递给自己的appB)。
104104

105105

106-
通过上面的一些简单介绍我们了解了cookie和session的一些基础知识,知道他们之间的联系和区别,做web开发之前,有必要将一些必要知识了解清楚,才不会在用到时捉襟见肘,或是在调bug时候如无头苍蝇乱转。接下来的几小节我们将详细介绍session相关的知识。
106+
通过上面的一些简单介绍我们了解了cookie和session的一些基础知识,知道他们之间的联系和区别,做web开发之前,有必要将一些必要知识了解清楚,才不会在用到时捉襟见肘,或是在调bug时如无头苍蝇乱转。接下来的几小节我们将详细介绍session相关的知识。
107107

108108
## links
109109
* [目录](<preface.md>)

zh/06.2.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,10 +95,10 @@ var provides = make(map[string]Provider)
9595
// it panics.
9696
func Register(name string, provider Provider) {
9797
if provider == nil {
98-
panic("session: Register provide is nil")
98+
panic("session: Register provider is nil")
9999
}
100100
if _, dup := provides[name]; dup {
101-
panic("session: Register called twice for provide " + name)
101+
panic("session: Register called twice for provider " + name)
102102
}
103103
provides[name] = provider
104104
}
@@ -111,7 +111,7 @@ Session ID是用来识别访问Web应用的每一个用户,因此必须保证
111111

112112
func (manager *Manager) sessionId() string {
113113
b := make([]byte, 32)
114-
if _, err := io.ReadFull(rand.Reader, b); err != nil {
114+
if _, err := rand.Read(b); err != nil {
115115
return ""
116116
}
117117
return base64.URLEncoding.EncodeToString(b)
@@ -221,7 +221,7 @@ func (manager *Manager) GC() {
221221
我们可以看到GC充分利用了time包中的定时器功能,当超时`maxLifeTime`之后调用GC函数,这样就可以保证`maxLifeTime`时间内的session都是可用的,类似的方案也可以用于统计在线用户数之类的。
222222

223223
## 总结
224-
至此 我们实现了一个用来在Web应用中全局管理Session的SessionManager,定义了用来提供Session存储实现Provider的接口,下一小节,我们将会通过接口定义来实现一些Provider,供大家参考学习。
224+
至此 我们实现了一个用来在Web应用中全局管理Session的SessionManager,定义了用来提供Session存储实现Provider的接口下一小节,我们将会通过接口定义来实现一些Provider,供大家参考学习。
225225

226226
## links
227227
* [目录](<preface.md>)

0 commit comments

Comments
 (0)