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

时间:2014-03-03 04:10:00

标签: asp.net-mvc asp.net-web-api

所以这就是问题所在。我的asp.net mvc网站上有一个管理部分,它使用单页面应用程序来编辑数据库中的表格。现在没有什么可以防止有人进入管理部分并看到那些单页应用程序。他们将无法做任何事情,因为Web API在后端是安全的。我正在考虑保护这些管理页面单页应用程序的最佳方法。

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

1 个答案:

答案 0 :(得分:1)

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

如果您只有几个角色可以使用,则可以使用标准的Authorize属性:

[Authorize( Roles = Constants.ADMIN )]

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

public class AuthorizeUserAttribute : AuthorizeAttribute
{
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        //something more complex here
    }
}