前段时间写了扩展.net安全机制(1, 2),当时做了些试验代码,关于用户权限控制的功能是没有问题的,但关于权限管理却没有做实际的代码进行试验。当时想当然的认为可以通过反射机制读取到定制安全属性的内容,这几天开始做实际的代码,却发现并没有这么简单反射获取定制Attribute
我的目标是这样的,打开一个dll文件,通过反射得到其所有类和方法,并调用GetCustomAttributes方法获取其Attribute,然后读取这些Attribute记录的数据并入库管理。可是,现在发现GetCustomAttributes方法好像不能得到从CodeAccessSecurityAttribute继承的属性。我尝试了自己定义的安全Attribute和.net提供的PrincipalPermissionAttribute,都不行。用.NET Reflector看了一下反编译后的代码,发现这些Attribute变成了PermissionSetAttribute。可是,既然Reflector可以看到PermissionSetAttribute,那么我自己的代码通过反射应该至少也可以看到这个啊,看来还需要继续研究反射获取定制Attribute
不过,就目前情况,也有个不太完美的解决方案,就是除了安全Attribute,再定义一个普通的定制Attribute,记录需要管理的信息,这个普通的Attribute是可以通过GetCustomAttributes得到的,这个我已经试验过。这个方案不完美的地方就是要为需要安全控制的对象加两个Attribute,而且要保证其内容一致。确实不完美,不过可以用,也许只能采用这个方案了反射获取定制Attribute

相关文章:

  • 2022-02-03
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-03
  • 2021-11-20
  • 2021-12-19
猜你喜欢
  • 2022-02-09
  • 2018-03-16
  • 2018-04-26
  • 2022-12-23
  • 2022-12-23
  • 2021-05-14
  • 2022-02-07
相关资源
相似解决方案