1

我需要授权用户使用我的 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接口。

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

任何帮助将不胜感激。

4

1 回答 1

0

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

于 2013-03-27T06:20:01.580 回答