对用户隐藏部分视图,但使其可供 AJAX 使用

本文关键字:AJAX 使用 隐藏部 用户 视图 | 更新日期: 2023-09-27 17:56:01

所以基本上我有一个带有 Angular 的单页应用程序 ASP.NET 它与 MVC 一起工作。我有一个只有部分视图的控制器,我希望用户无法访问它们。

通常为此我会使用 [ChildActionOnly] ,但我不是从视图中调用我的 MVC 部分,而是从 AJAX 调用(我在应用程序的不同部分使用 jQuery 和角度执行此操作)。

有没有办法阻止用户访问我的部分,但让 ajax 在他们单击链接时获取它们?

谢谢

对用户隐藏部分视图,但使其可供 AJAX 使用

虽然使用AuthorizationAttribute处理这个问题听起来开箱即用,但你可以想象这样做。

public class AjaxOnlyAuthorization : AuthorizeAttribute
{
    public override void OnAuthorization(AuthorizationContext filterContext)
    {
        if (filterContext.HttpContext.Request.IsAjaxRequest())
        {
            base.OnAuthorization(filterContext);
        }
        else
        {
            //..No Go
        }
    }
}

然后。。。。

[AjaxOnlyAuthorization]
public MyAjaxOnlyClass
{
}

ActionFilterAttribute可能更合适,因为响应格式与授权关系不大。

public class AjaxOnlyFilter : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        ...    
    }
}

您是否尝试过数据注释授权?当然,您可以将"管理员"更改为任何组或用户,或者只是使用它而没有任何用户或角色:

[Authorize(Roles = "Admin")]

您可以在类的正上方或要限制的每个操作上方添加此内容

当然,您只能在类声明上方执行[授权]以确保必须登录,然后通过声明谁有权使用这些操作来更具体地在每个操作上执行此操作。