我正在ASP.NET MVC上开发一个Web应用程序,我正在使用ViewBag和TempData来存储一些在用户注销之前会存活的值。即:用户登录的是什么,一些内部ID,以便我可以检查角色和用户不应该知道的其他值。
我的问题是:
感谢您的回答。
答案 0 :(得分:2)
TempData只会持续到下一页访问; ViewBag用于将值从控制器传递到视图。两者都不适合存储将持续会话的信息。在安全性方面,它们都是服务器端,用户不会意识到它们,所以,是的,它们是安全的。
如果要在会话期间保留值,则需要使用不同的机制。有几种可供您使用。我最喜欢的是使用会话变量,但是一些开发人员坚决反对会话变量。您需要进一步研究您的选择。
答案 1 :(得分:1)
您应该在会话中存储基于会话的数据。
ViewBag适用于View中需要的附带数据。页面标题,类似的东西。对于视图中需要的其他数据,您应该使用该模型。
TempData用于下一个操作所需的附带数据。它可以存储服务器 - 客户端 - 服务器之间的一次往返数据;除非你特意把它粘在一边,否则它会被删除。
除非您愚蠢地将安全数据故意发送给客户,否则这些都不会暴露存在安全风险的数据。
答案 2 :(得分:0)
为了检查用户的角色,您可以使用MVC的基于角色的授权,例如[Authorize(Roles = "Administrator")]
....您的查询(2): 是,它们是安全的...但不是为了您长期存放东西的目的。对于这样的持续时间,开发人员大多使用Session
这也是安全的