代码之家  ›  专栏  ›  技术社区  ›  Shawn

如果授权属性无法重定向到asp.net mvc中的另一个视图,请将其重定向到

  •  0
  • Shawn  · 技术社区  · 10 年前

    所以我有一个关于 [Authorize] 标签我需要用户具有管理员角色才能访问某个视图。它工作得很好,只允许“管理员”而不是“用户”访问它。但每当用户访问时,它都会告诉我:

    Server Error in '/' Application.
    
    The resource cannot be found.
    
    Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable.  Please review the following URL and make sure that it is spelled correctly. 
    
    Requested URL: /Login.cshtml
    
    Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.34009 
    

    所以我的问题是,当用户访问时,我如何将他们重定向到另一个视图?

    这是我的索引控制器:

    [Authorize(Users = "Admin")]
            public ActionResult Index()
            {
                var user = db.User.Include(u => u.UserRole);
                return View(user.ToList());
            }
    
    1 回复  |  直到 10 年前
        1
  •  1
  •   Community basarat    4 年前

    您可以通过两种方式解决此问题:

    1. 让匿名用户可以访问索引操作,并根据角色调用不同的函数。
    2. 创建自己的自定义授权属性(您可以找到一个示例 here ).

    这两种方法都很好,没有明显的优势/劣势,因此您可以选择其中任何一种。

    希望这有帮助。