我需要授权用户使用我的 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接口。
所有与资源交互的请求都需要实现授权码。
任何帮助将不胜感激。