我正在开发 Asp.Net MVC 5。当我单击链接(放置在另一个网站中)时,我导航到 UserDetails.cshtml 页面。 基本上,第 3 方网站将用户名和密码传递到我的网站,并使用我授权并显示更多用户信息。
没问题,但网址看起来像这样
localhost:8080//Admin/UserDetails/UserName/PWD.
我不想在 URL 中显示用户名和密码,即 URL 应类似于:
localhost:8080//管理员/用户详细信息/
一种可能的解决方案是在 IIS 中重写 URL (http://www.hanselman.com/blog/ASPNETMVCAndTheNewIIS7RewriteModule.aspx)
但我相信有一种更简单的方法可以通过使用 MVC 的路由机制来处理这个问题。
请帮我解决同样的问题。
编辑: 由于你们中的许多人都感到困惑为什么我不在这里发布表单,让我重新构建我的问题。我无法控制第三方应用程序,因此我无法要求他们将表单发布到我的 MVC 应用程序。同样,第 3 方应用程序是 Oracle 报告应用程序 (OBI),因此从该应用程序执行 POST 可能也不可行...
最佳答案
让我根据您的问题对您的要求进行逆向工程:
I want to have an URI that when invoked will give access to a secured section of my website. This URI must be clicked by visitors of a third-party site, whom I give that URI to. I want to hide the credentials from the URI.
您不能这样做,要求是冲突的。您无法分发 URI 来验证向该 URI 发出请求的任何人。
您可以使用 token 执行某些操作(例如 http://your-site/auth/$token
),但是任何有权访问该 URI 的人都可以使用它来验证自己的身份,或者干脆将其放在他们自己的网站上。
如果您有想要向第三方站点公开的数据,请让该站点在您的站点后台执行 HTTP 请求(使用 token 、用户名、 header 或您想要用于身份验证的任何内容),并显示他们网站上的回复。然后,访问者将不会看到该流量,也无法共享 URI,一切都将是安全的。
关于asp.net-mvc - 从 MVC 5 应用程序的 URL 隐藏参数(敏感信息),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35271186/