开发者

Dynamic security for ASP.NET MVC

I开发者_Go百科'm designing an app in ASP.NET MVC, and the usual way to protect actions is by the attribute Authorize which protects an entire action.

[Authorize(Roles = "Managers")]
public AtionResult Info(int employeeId )

However, in our design the application is highly data driven. An action on one set of data might be allowed, and on another set of data not be allowed.

//OK
http://host/Employee/Info/102

//Not OK
http://host/Employee/Info/105

What pattern should we use for security for this design?


You can create a derived Authorize attribute to do whatever you want.

public class DynamicSecurity : AuthorizeAttribute
{
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        //go to db
        return true;
    }
}


You could decorate your action methods with a custom attribute deriving from the ActionFilterAttribute class, and in the OnActionExecuting method inspect the data in the incoming request, and if anything's not allowed then throw a security exception/redirect/do whatever you require.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜