我有一个 ASP.NET MVC 4 博客,它已经完成了 90%,但我需要一件事——我有一个网页可以说 index/secretPage 但我希望只有在我从另一个网页重定向后才能导航到这个网页——可以说索引/重定向。如果地址是硬编码的,它不应该导航,如果访问者来自不同的链接,比如 blog/post/24,它也不应该导航。我希望我的问题很清楚,而不是你的帮助。
问问题
802 次
2 回答
2
如果直接调用,您还可以使用显示另一个页面的操作来掩盖秘密页面。
在此示例中,有 2 个操作。返回虚假视图的“秘密”和真实调用的“检查”。在此操作中,布尔变量“allowSecret”被检查,然后用户看到视图“secret.cshtml”(如果允许)或“index.cshtml”(如果不允许)。
这是具有该功能的简单控制器的示例代码:
using System.Web.Mvc;
namespace Test.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
return View("Index");
}
public ActionResult Check()
{
// check if user is allowed to show secret page
if(allowSecret == true)
return View("Secret");
// Otherwise return view 'index.cshtml'
return View();
}
public ActionResult Secret()
{
// Always shows view 'index.cshtml' if url is ".../secret"
return View("Index");
}
}
}
您还可以在检查失败后重定向到另一个操作,而不是调用“假视图”:
return RedirectToAction("Index")
不同之处在于用户在浏览器中看到的 url。返回视图不会更改 url,重定向到另一个操作会将 url 更改为更改的路由。
当然,您可以将检查放在控制器后面的另一个类中。
另一种选择是使用'NonAction' 属性:
[NonAction]
public ActionResult Check()
{
...
}
希望对您有所帮助,
DD
于 2013-03-29T14:16:56.670 回答
0
您可以UrlReferrer
了解谁引用了当前页面并抛出异常或重定向回
HttpContext.Current.Request.UrlReferrer
http://msdn.microsoft.com/en-IN/library/system.web.httprequest.urlreferrer.aspx
但是出于什么原因,您需要这个。它对我来说看起来不是一个好的设计。
希望这可以帮助
于 2013-03-28T09:37:49.840 回答