FormsAuthentication.SetAuthCookie是必须写的吗?

是必须写的。让我们了解一些小的工作细节。

  • 客户端通过浏览器给服务器发送请求。

  • 当通过浏览器生成,所有相关的Cookies也会随着请求一起发送。

  • 服务器接收请求后,准备响应。

  • 请求和响应都是通过HTTP协议传输的,HTTP是无状态协议。每个请求都是新请求,因此当同一客户端发出二次请求时,服务器无法识别,为了解决此问题,服务器会在准备好的请求包中添加一个Cookie,然后返回。

  • 当客户端的浏览器接收到带有Cookie的响应,会在客户端创建Cookies。

  • 如果客户端再次给服务器发送请求,服务器就会识别。

FormsAuthentication.SetAuthCookie将添加 “Authentication”特殊的Cookie来响应。

是否意味着没有Cookies,FormsAuthentication 将不会有作用?

不是的,可以使用URI代替Cookie。

打开Web.Config文件,修改Authentication/Forms部分:

   1:  <forms cookieless="UseUri" loginurl="~/Authentication/Login"></forms>


授权的Cookie会使用URL传递。

通常情况下,Cookieless属性会被设置为“AutoDetect“,表示认证工作是通过Cookie完成的,是不支持URL传递的。

FormsAuthentication.SetAuthCookie中第二个参数”false“表示什么?

false决定了是否创建永久有用的Cookie。临时Cookie会在浏览器关闭时自动删除,永久Cookie不会被删除。可通过浏览器设置或是编写代码手动删除。

当凭证错误时,UserName 文本框的值是如何被重置的?

HTML 帮助类会从Post 数据中获取相关值并重置文本框的值。这是使用HTML 帮助类的一大优势。

Authorize属性有什么用?

Asp.net MVC中提供四种过滤器来过滤请求和响应的,Authorize属性是在Authorize过滤器之后执行的,可以确保授权请求Action 方法处理。

需要为每个Action 方法添加授权属性吗?

不需要,可以将授权属性添加到Controller 层或 Global 层。


本文出自 “葡萄城控件技术团队博客” 博客,请务必保留此出处http://powertoolsteam.blog.51cto.com/2369428/1671676