ySJ
|
2.0/chapter14/#344 |
2010-04-22 10:00:15
|
将 <literal>'django.contrib.auth'</literal> 放在你的 <literal>INSTALLED_APPS</literal> 设置中,然后运行 <literal>manage.py syncdb</literal>以创建对应的数据库表。
|
|
ySJ
|
2.0/chapter14/#342 |
2010-04-22 09:57:33
|
需要确认用户使用cookie,这样sesson 框架才能正常使用。
|
|
ySJ
|
2.0/chapter14/#341 |
2010-04-22 09:57:10
|
根据本章早前的部分确认已经安装了session 框架。
|
|
ySJ
|
2.0/chapter14/#334 |
2010-04-22 09:49:51
|
如果你已经用了admin工具(详见第6章),就会看见这些工具的大部分。如果你在admin工具中编辑过用户或组,那么实际上你已经编辑过授权系统的数据库表了。
|
|
ySJ
|
2.0/chapter14/#328 |
2010-04-22 09:26:30
|
<emphasis>权限</emphasis> : 用于标识用户是否可以执行某种操作的二进制(yes/no)标志
|
|
ySJ
|
2.0/chapter14/#316 |
2010-04-22 09:24:32
|
这个系统一般被称为 <emphasis>auth/auth</emphasis> (认证与授权)系统。
|
|
ySJ
|
2.0/chapter14/#304 |
2010-04-22 09:21:33
|
这是一个有意而为之的设计。
|
|
ySJ
|
2.0/chapter14/#302 |
2010-04-22 09:21:13
|
它不会后退到把会话ID编码在URL中(像某些工具(PHP,JSP)那样)。
|
|
ySJ
|
2.0/chapter14/#301 |
2010-04-22 09:20:47
|
Django session 框架完全而且只能基于cookie。
|
|
ySJ
|
2.0/chapter14/#299 |
2010-04-22 09:17:32
|
如果你压根儿就没有设置任何会话数据,它不会 送出会话cookie(除非 <literal>SESSION_SAVE_EVERY_REQUEST</literal> 设置为 <literal>True</literal> )。
|
|
ySJ
|
2.0/chapter14/#295 |
2010-04-22 09:16:22
|
Session 数据在需要的时候才会读取。
|
|
ySJ
|
2.0/chapter14/#291 |
2010-04-22 09:12:48
|
参考Python内建模块<literal>pickle</literal>的文档以获取更多信息。
|
|
|
2.0/chapter05/#366 |
2010-04-21 20:37:50
|
除非你单独指明,否则Django会自动为每个模型生成一个自增长的整数主键字段每个Django模型都要求有单独的主键。<literal>id</literal> |
|
|
2.0/chapter05/#420 |
2010-04-21 20:36:16
|
这些 <literal>CREATE TABLE</literal> 语句会根据你的数据库而作调整,这样象数据库特定的一些字段例如:(MySQL),<literal>auto_increment</literal>(PostgreSQL),<literal>serial</literal>(SQLite),都会自动生成。<literal>integer primary key</literal> |
|
ySJ
|
2.0/chapter14/#282 |
2010-04-21 17:31:49
|
如果设置 <literal>True</literal> , cookie就会标记为安全, 这意味着cookie只会通过HTTPS来传输。
|
|
ySJ
|
2.0/chapter14/#281 |
2010-04-21 17:31:14
|
是否在session中使用安全cookie。
|
|
ySJ
|
2.0/chapter14/#239 |
2010-04-21 17:24:26
|
浏览器关闭即失效会话 vs
|
|
ySJ
|
2.0/chapter14/#236 |
2010-04-21 17:23:57
|
但如果 <literal>SESSION_SAVE_EVERY_REQUEST</literal> 设置为 <literal>True</literal> ,会话cookie在每次请求的时候都会送出。
|
|
ySJ
|
2.0/chapter14/#233 |
2010-04-21 17:22:51
|
你可以设置 <literal>SESSION_SAVE_EVERY_REQUEST</literal> 为 <literal>True</literal> 来改变这一缺省行为。如果置为True的话,Django会在每次收到请求的时候保存session,即使没发生变化。
|
|
ySJ
|
2.0/chapter14/#224 |
2010-04-21 17:19:00
|
你需要使用<literal>get_decoded()</literal> 来读取实际的session数据。
|
|
ySJ
|
2.0/chapter14/#221 |
2010-04-21 17:16:59
|
因为它是一个标准的模型,所以你可以使用Django数据库API来存取session。
|
|
ySJ
|
2.0/chapter14/#220 |
2010-04-21 17:15:41
|
从内部来看,每个session都只是一个普通的Django model(在 <literal>django.contrib.sessions.models</literal> 中定义)。每个session都由一个随机的32字节哈希串来标识,并存储于cookie中。
|
|
ySJ
|
2.0/chapter14/#220 |
2010-04-21 17:15:28
|
从内部来看,每个session都只是一个普通的Django model(在 <literal>django.contrib.sessions.models</literal> 中定义)。每个session都由一个随机的32字节哈希串来标识,并存储于数据库中。
|
|
ySJ
|
2.0/chapter14/#201 |
2010-04-21 17:07:18
|
就像前面提到的,你不能指望所有的浏览器都可以接受cookie。
|
|
ySJ
|
2.0/chapter14/#183 |
2010-04-21 17:04:40
|
这是个简单到不能再简单的例子:在用户发了一次评论后将<literal>has_commented</literal>设置为<literal>True</literal>。
|
|
ySJ
|
2.0/chapter14/#184 |
2010-04-21 17:03:58
|
这是个简单(但不很安全)的、防止用户多次评论的方法。
|
|
ySJ
|
2.0/chapter14/#177 |
2010-04-21 16:59:29
|
不要用一个新对象来替换掉 <literal>request.session</literal> ,也不要存取其属性。
|
|
ySJ
|
2.0/chapter14/#150 |
2010-04-21 16:55:32
|
编辑 <literal>MIDDLEWARE_CLASSES</literal> 配置,确保 <literal>MIDDLEWARE_CLASSES</literal> 中包含 <literal>'django.contrib.sessions.middleware.SessionMiddleware'</literal>。
|
|
ySJ
|
2.0/chapter14/#147 |
2010-04-21 16:54:43
|
Sessions 功能是通过一个中间件(参见第17章)和一个模型(model)来实现的。
|
|
ySJ
|
2.0/chapter14/#140 |
2010-04-21 16:52:54
|
这些数据在服务器端存储,并对cookie的收发进行了抽象。
|
|
ySJ
|
2.0/chapter14/#130 |
2010-04-21 16:49:35
|
因此不能在cookies中存储可能会被篡改的敏感数据。
|
|
ySJ
|
2.0/chapter14/#127 |
2010-04-21 16:48:22
|
即使从预想中的接收者返回的cookie也是不安全的。
|
|
ySJ
|
2.0/chapter14/#114 |
2010-04-21 16:45:41
|
如果你想知道cookies对于Web应用有多重要,你可以试着打开这个浏览器的 选项:
|
|
ySJ
|
2.0/chapter14/#109 |
2010-04-21 16:44:00
|
也许你已经注意到了,cookies的工作方式可能导致的问题。
|
|
ySJ
|
2.0/chapter14/#88 |
2010-04-21 16:42:22
|
cookie生效的路径前缀。
|
|
xbwee
|
2.0/chapter17/#254 |
2010-04-21 16:39:00
|
详见第14章。
|
|
xbwee
|
2.0/chapter17/#282 |
2010-04-21 16:38:35
|
在下一章<reference name="next chapter" refuri="../chapter18/">next chapter</reference>,我们将讨论如何集成数据库模式等保留系统。
|
|
ySJ
|
2.0/chapter14/#53 |
2010-04-21 16:38:31
|
写cookies稍微复杂点。
|
|
xbwee
|
2.0/chapter17/#282 |
2010-04-21 16:38:00
|
在下一章<reference name="next chapter" refuri="../chapter18/">next chapter</reference>,我们将讨论如何集成数据库应用的保留系统。
|
|
ySJ
|
2.0/chapter14/#49 |
2010-04-21 16:36:46
|
读取已经设置好的cookies极其简单。
|
|
xbwee
|
2.0/chapter17/#267 |
2010-04-21 16:35:41
|
<literal>django.middleware.transaction.TransactionMiddleware</literal>
.
|
|
xbwee
|
2.0/chapter17/#266 |
2010-04-21 16:35:32
|
中间件类:
|
|
xbwee
|
2.0/chapter17/#258 |
2010-04-21 16:35:18
|
中间件类:
|
|
xbwee
|
2.0/chapter17/#259 |
2010-04-21 16:35:03
|
<literal>django.middleware.cache.UpdateCacheMiddleware</literal>和<literal>django.middleware.cache.FetchFromCacheMiddleware</literal> |
|
xbwee
|
2.0/chapter17/#251 |
2010-04-21 16:34:26
|
<literal>django.contrib.sessions.middleware.SessionMiddleware</literal>
.
|
|
xbwee
|
2.0/chapter17/#250 |
2010-04-21 16:34:16
|
中间件类:
|
|
xbwee
|
2.0/chapter17/#232 |
2010-04-21 16:33:38
|
<literal>django.middleware.http.SetRemoteAddrFromForwardedFor</literal>
.
|
|
xbwee
|
2.0/chapter17/#231 |
2010-04-21 16:33:30
|
中间件类:
|
|
xbwee
|
2.0/chapter17/#220 |
2010-04-21 16:32:34
|
<literal>django.middleware.http.ConditionalGetMiddleware</literal>
.
|
|
xbwee
|
2.0/chapter17/#219 |
2010-04-21 16:32:23
|
中间件类:
|
|