ASP.NET MVC 4使页面不能直接访问

本文关键字:不能 访问 NET MVC ASP | 更新日期: 2023-09-27 18:06:10

我有一个ASP。. NET MVC 4博客这是90%完成,但我需要一件事-我有一个网页,让我们说索引/secretPage,但我希望能够导航到这个网页后,我从另一个重定向-让我们说索引/重定向。如果地址是硬编码的,它不应该导航,如果访问者来自不同的链接,如博客/帖子/24,它也不应该能够导航。我希望我的问题很清楚,谢谢你的帮助。

ASP.NET MVC 4使页面不能直接访问

您还可以使用一个操作来掩盖秘密页面,如果直接调用该操作,则显示另一个页面。

在这个例子中有2个动作。'Secret'用于返回虚假视图,'Check'用于返回真实调用。在此操作中,bool变量'allowSecret'列表被检查,然后用户看到视图'secret '。Cshtml '(如果允许的话)或'index '。

下面是一个具有该功能的简单控制器示例代码:
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");
        }        
    }
}

您也可以在检查失败后重定向到另一个操作,而不是调用'fake-view':

return RedirectToAction("Index")

区别在于用户在浏览器中看到的url。返回一个视图不会改变url,重定向到另一个操作会将url更改为已更改的路由。

当然,您可以在控制器后面的另一个类中放置检查。

另一个选择是使用'NonAction'属性:

[NonAction]
public ActionResult Check()
{
   ...
}

希望这对你有帮助。

DD

您可以UrlReferrer了解谁引用了当前页面并抛出异常或重定向回

HttpContext.Current.Request.UrlReferrer
http://msdn.microsoft.com/en-IN/library/system.web.httprequest.urlreferrer.aspx

但是不管什么原因你需要这个。在我看来,这不是一个好的设计。

希望能有所帮助