授权用户使用资源mvc3

时间:2013-03-27 06:10:28

标签: c# asp.net-mvc-3

我需要在我的MVC 3项目中授权用户反对资源。以下列方式进行是一种好习惯吗?

interface IResource
{
    string Id { get; set; }
    bool Authorize(User user);
}

class User
{
    // some logic for user
}

class ResourceA : IResource
{
    public string Id { get; set; }

    public ResourceA(string id)
    {
        Id = id;
    }

    bool Authorize(User user)
    {
        // Query database to check if user has permission to the resource
        // return true if the user has, otherwise false
    }
}

class TestController : Controller
{
    // Get details of resource A
    public ActionResult Get(User user, string resourceId)
    {
        IResource resource = new ResourceA(resourceId);
        if (resource.Authorize(user))
        {
            // do stuff
        }
        else
        {
            throw HttpException(403, "No permission");
        }
    }
}

在上面的实现中:

网站的所有资源都被迫实施IResource接口。

与资源交互的所有请求都需要实现授权代码。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

解决方案看起来不错。如果您具有与资源相关的特定控制器和操作,您还可以使用ActionFilter,您可以在其中创建自定义逻辑,并在验证失败时进行检查和重定向。属性也是中央逻辑系统的一种方式。解决方案取决于用户如何与资源进行交互。