2012-01-22 401 views
0

我有用于创建记录的GET操作。由于该页面有些动态,因此我不使用模型来保存数据。我会去做一些OAuth,以后再回到创建屏幕。为了传回数据,我使用查询字符串重定向。我在GET操作中解析查询字符串,然后显示视图。问题是,查询字符串显示在浏览器中。这显示伪敏感数据。隐藏查询字符串参数

由于我只使用查询字符串传输数据,我想知道是否可以抛出查询字符串,以防止它显示在浏览器上。

否则,有没有办法去另一个行动没有重定向?我发现,如果我直接调用“其他”操作方法,它会尝试查找原始操作的视图。我可以明确地将return View(viewModel)行更改为return View("create", viewModel),但这似乎很脏。

回答

2

您应该考虑更改操作以接受POST请求。至少这会防止敏感信息出现在浏览器中。为了提高安全性,您的网站应通过SSL提供服务。

您可以尝试的另一件事是加密敏感值或整个查询字符串。唯一的问题是,除非您需要用户登录,否则这也将保留在浏览器的历史记录中。

+0

我无法重定向到POST。当OAuth进程返回时,它总是使用GET。似乎没有办法通过POST重定向。我的意思是,我可以在内部创建一个Web请求...但这看起来太复杂了。 –

0

看起来您的操作方法尝试做得太多。认证/授权是一个单独的问题,不应该是操作方法的一部分。将身份验证工作移入操作筛选器会更好。

创建一个扩展授权属性的类并覆盖它的OnAuthorization方法来完成授权工作。

这将您的控制器操作方法释放为接受POST请求。

+0

OAuth是一个网络标准,允许用户将访问他们的信息授予其他网站。因此,我可以抓取用户的Google Analytics数据或Twitter数据或Facebook数据。在我的情况下,我正在请求一个称为刷新令牌的东西,这样我就可以随时在服务器上获取数据。用户确实没有对我的系统进行身份验证 - 他们只是授权我访问他们的数据。 –

+0

这不是与实际控制人行为分开的问题吗?看起来你需要这个标记才能继续你的行动。如果授权属性不适合您的需求,您仍然可以实施IActionFilter来执行这些操作。 – chandmk

+0

用户已经登录。他们不试图访问我的系统,我试图访问他们的数据。 –