加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – Session实际上如何在MVC中运行?

发布时间:2020-12-16 07:01:38 所属栏目:asp.Net 来源:网络整理
导读:我对MVC4中的会话管理有点困惑. 可以说,我输入了用户名和密码,然后单击了“登录”按钮. 然后在服务器端,我从HttpContext.Current.Session获得了SessionId.然后我正在验证针对数据库的用户凭据.如果用户有效,则在Session中添加SessionId,userName和uiserId.
我对MVC4中的会话管理有点困惑.

可以说,我输入了用户名和密码,然后单击了“登录”按钮.
然后在服务器端,我从HttpContext.Current.Session获得了SessionId.然后我正在验证针对数据库的用户凭据.如果用户有效,则在Session中添加SessionId,userName和uiserId.

可以说,下次请求来自同一台机器和同一个浏览器时,我得到了相同的SessionId,然后允许该用户访问其他信息.

现在我有以下问题:

>服务器如何知道该请求来自同一台浏览器和同一台机器?
>我发现,SessionId对于不同的浏览器是不同的,但对于不同机器上的同一浏览器是相同的,所以如果我从machine1登录并使用谷歌浏览器,那么是否可以为不同的浏览器使用相同的会话?(意味着会话将可用于具有相同浏览器的不同机器.是否可能?)
>服务器如何理解该请求是针对同一用户,谁登录?
>在asp.net会话中由viewState维护,但是MVC中没有使用视图状态,那么MVC中使用了什么?

解决方法

首先,我建议阅读有关HTTP会话的 this Wikipedia article.你问题的答案:

>对于每个请求,客户端都会在cookie中发送其SessionId
或查询字符串.
>默认情况下不应该这样.但它可以在session hijacking完成.
>服务器读取由问题1的客户端发送的SessionId.服务器维护例如键值数据对象,以便它可以加载给定SessionId的正确数据.
> ASP MVC不使用视图状态,因为它与ASP.NET完全不同.有关更多信息,请参见this question.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读