我有几个模型,我想显示一些用于操作链接的常用图标(新建、详细信息、编辑、删除)和一些仅适用于某些模型的特定图标;这些图标链接只能在用户有权执行操作时显示。权限由角色决定,但我想将它们抽象化,以便明确需要的角色只写在一个地方。
我还想使用相同的逻辑来显示图标和“保护”操作方法,这样如果Foo
以前需要角色来编辑 lolcatz,现在我想将其更改为Bar
角色,我只需要更改一件事.
有很多方法可以实现这一点,我不确定如何进行。
我可以编写一个ModelAction
类,负责决定单个操作的权限、链接、图标、文本,还有一些ModelActionsCollection
负责为单个模型收集所有可能的操作,这样我就可以编写一个父类和几个下降的类。
我的疑惑:
我应该如何将模型与
ModelActionsCollection
?我应该使用散列还是一些静态类,比如SomeStaticClass.GetModelActionsCollection(someModel)
?或typeof(someModel)
,或"className"
或什么?我应该如何装饰方法?我应该写类似的东西:
[MyAuthorize("action", "model")] public ActionResult action(...)
或者是其他东西?
可以直接在这些类的方法中访问当前经过身份验证的用户,还是应该接收用户作为参数?
这些类属于什么命名空间?他们是模特吗?帮手?或者是什么?
最后:是否有人已经以可重用的方式完成了所有这些工作?