Asp.net mvc 在单页应用程序中保护单个视图/页面或管理部分

Asp.net mvc 在单页应用程序中保护单个视图/页面或管理部分,asp.net-mvc,asp.net-web-api,Asp.net Mvc,Asp.net Web Api,这就是问题所在。我的asp.NETMVC网站上有一个管理部分,它使用单页应用程序编辑数据库中的表。现在,没有什么可以阻止某人去管理区查看那些单页应用程序。他们将无法做任何事情,因为Web API在后端是安全的。我正试图想出保护那些管理页面单页面应用程序的最佳方法 Web API使用新的ASP.NET身份验证功能来实现安全性,这一点非常简单。我也可以在mvc站点上使用ASP.NET标识。当有人为单页应用程序请求其中一个视图时,他们将被重定向到登录页面。这将给我留下一个网站,它是一个单页应用程序与传

这就是问题所在。我的asp.NETMVC网站上有一个管理部分,它使用单页应用程序编辑数据库中的表。现在,没有什么可以阻止某人去管理区查看那些单页应用程序。他们将无法做任何事情,因为Web API在后端是安全的。我正试图想出保护那些管理页面单页面应用程序的最佳方法


Web API使用新的ASP.NET身份验证功能来实现安全性,这一点非常简单。我也可以在mvc站点上使用ASP.NET标识。当有人为单页应用程序请求其中一个视图时,他们将被重定向到登录页面。这将给我留下一个网站,它是一个单页应用程序与传统mvc网站的混合,用于个人页面安全。这样做可以吗?还是有更好的解决方案?

只要您使用一致的授权方法,您肯定希望分别保护控制器和Web API方法。只要您保持一致,例如使用基于属性的授权检查,“混合”就可以了

如果只有几个角色可以使用,则可以使用标准的“授权”属性:

[Authorize( Roles = Constants.ADMIN )]
public class AuthorizeUserAttribute : AuthorizeAttribute
{
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        //something more complex here
    }
}

如果有更复杂的事情发生,请考虑自定义授权属性:

[Authorize( Roles = Constants.ADMIN )]
public class AuthorizeUserAttribute : AuthorizeAttribute
{
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        //something more complex here
    }
}