我很新的MVC,最近我想从一个空的MVC模板创建一个登录表单。我听说过身份类和会话。这两个有什么区别?应该同时使用它们还是这些不同类型的东西?在ASP.NET MVC中的会话
回答
这个相对简单的问题有很多。首先,我认为你需要了解会议是什么。
HTTP协议是无状态的。这意味着每个请求都是它自己的东西,不受之前发生的任何事情的影响。但是,应用程序需要状态,所以引入了会话的概念。会话是两个组件的组合,一个是服务器端,另一个是客户端。在传统意义上,服务器将存储一些与会话ID相结合的数据。然后它会发送一个cookie到包含该会话ID的客户端。客户端将cookie发回到下一个请求。当服务器看到cookie时,它使用它包含的会话标识来查找它先前存储的数据。
当谈到类似身份验证的情况时,需要状态来在请求之间持续进行身份验证。在像MVC网站这样的东西中,会话被用于这个目的。在客户端设置一个cookie,然后由客户端发送每个请求。服务器读取cookie,验证身份验证并授权用户。在像Web Api这样的东西中,会话是不允许的,所以客户端必须通过每个请求来传递身份验证,通常采用Authorization
标题的形式,其中将包含类似不记名令牌的内容。然而,普通用户通过Web浏览器加载的任何传统网站都将通过会话持续进行认证。
现在,在ASP.NET代码中,有一个名为Session
的静态动态字典。这利用会话的概念在Web请求之间保持状态,但不被任何ASP.NET站点可用的身份验证机制使用。不鼓励使用Session
,因为通常将数据存储在数据库等更好的地方会更合适。有一些地方使用Session
会很好,但你应该有一个很好的理由这样做。但是,再次,这与认证/授权没有任何关系。
最后,ASP.NET网站有许多不同的身份验证系统可用,有些已弃用。就传统的用户身份验证而言,您拥有ASP.NET Membership和Identity。身份更新且优于ASP.NET Membership(也称为FormsAuthentication)。但是,它仅适用于使用MVC 5或Core的网站。
总而言之,如果您今天要创建一个需要身份验证的新网站,则需要查看ASP.NET身份。有大量的examples and tutorials from Microsoft。您可能需要也可能不需要在应用程序中使用Session
,但应尽可能避免使用它。无论如何,它与认证/授权完全分离,即使在引擎盖下,它们都使用类似的原则。
- 1. ASP.NET MVC会话
- 2. 在ASP.NET MVC会话超时
- 3. ASP.NET MVC 5会话
- 4. 在asp.net中的会话超时mvc
- 5. 在asp.net中的会话和性能MVC
- 6. MVC ASP.net会话是空的
- 7. 在ASP.NET MVC中启用会话状态
- 8. 在asp.net中防止会话超时mvc
- 9. 在ASP.NET MVC中处理会话超时
- 10. 如何在asp.net中处理会话mvc
- 11. 在asp.net中存储会话数据mvc
- 12. 会话超时绝不会在asp.net mvc
- 13. ASP.NET MVC中的会话超时警告
- 14. ASP.Net中的会话超时问题MVC
- 15. 指定ASP.NET MVC中的只读会话
- 16. ASP.NET中的会话管理mvc
- 17. ASP.NET MVC中的NHibernate上下文会话
- 18. ASP.NET MVC中会话cookie的持久性
- 19. ASP.NET MVC中的会话过期问题
- 20. ASP.Net中的会话固定MVC
- 21. 会话中的Asp.net mvc类参考
- 22. asp.net mvc会话超时
- 23. ASP.NET MVC会话状态
- 24. ASP.NET MVC LCID和会话
- 25. ASP.NET MVC会话到期
- 26. ASP.NET MVC 4会话超时
- 27. ASP.Net MVC - TempData会话问题
- 28. Safari会话总是忘记asp.net中的会话变量mvc 3
- 29. Asp.net MVC设置会话变量在javascript
- 30. 会话过期错误在asp.net MVC 3
你想使用令牌而不是会话。会议非常过时。看一看OAuth –
@SimonPrice:什么?没有任何意义。 '会话'并没有过时。我不知道这里的“令牌”是什么,会话是一个没有替代或替代的概念。 HTTP是无状态的。你用会话伪造状态。就那么简单。 –