如果用户输入直接URL,则限制直接访问所有视图显示/重定向到登录页面以外的错误页面

时间:2016-03-30 03:59:25

标签: c# asp.net-mvc asp.net-mvc-4

我正在使用MVC 4.

首页导航到http://localhost:61700/,其中包含用户名和密码以继续...

现在,我也可以通过输入http://localhost:61700/AccountInfo和其他网页来访问直接网址,而无需登录该应用。

如何限制此操作,如果用户未登录并键入直接URL,则需要转到错误页面

HomeController.cs

using System.Web.Mvc;

namespace myWebSite.Controllers
{
  public class HomeController : Controller
  {
    public ActionResult Index()
    {
      return View();
    }

    public ActionResult AccountStatus()
    {
      return View();
    }
...................

2 个答案:

答案 0 :(得分:2)

您可以应用授权属性以限制未经授权的用户。您也可以根据需要应用角色并添加用户。

[Authorize]

public class PrivateResourcesController : ApiController
{
    public IHttpActionResult Get()
    {
        return Ok(DateTime.Now);
    }             
}


[Authorize(Roles ="Admin",Users ="foo@mail.com")]

public class PrivateResourcesController : ApiController
{
    public IHttpActionResult Get()
    {
        return Ok(DateTime.Now);
    }             
}

答案 1 :(得分:0)

一个简单的想法:

  1. 创建一个控制器,说Controller继承自 if (Session["LoggedIn"] == 1) { base.OnActionExecuting(filterContext); } else { filterContext.Result = RedirectToAction("Index", "Login"); } } 并且只使用此方法

    protected override void OnActionExecuting(ActionExecutingContext filterContext)     {

    LoginController
  2. SecureController以外,继承Session["LoggedIn"]

  3. 中的所有其他控制器
  4. 有索引(或任何你喜欢的名字)方法登录。成功登录后将df <- data.frame(X= sample(c("Menu 1", "Menu 2"), 10, replace = TRUE), Y= sample(c("a1", "a2", "a3"), 10, replace = TRUE)) df X Y 1 Menu 2 a2 2 Menu 1 a3 3 Menu 1 a3 4 Menu 2 a1 5 Menu 1 a1 6 Menu 2 a2 7 Menu 1 a1 8 Menu 1 a2 9 Menu 2 a2 10 Menu 2 a2 library(dplyr) df %>% group_by(X,Y) %>% arrange(X,Y) %>% summarise(count = n()) Source: local data frame [5 x 3] Groups: X X Y count 1 Menu 1 a1 2 2 Menu 1 a2 1 3 Menu 1 a3 2 4 Menu 2 a1 1 5 Menu 2 a2 4 设置为1.

  5. 这就是你需要的一切。当然,这只是一个简单的发人深省的想法,让你走上正确的道路。如果用户未登录,这将允许您重定向到任何页面。不需要表单身份验证配置。这使您可以完全控制如何验证用户。