因为IPriincipal具有IIdentity属性,所以在我的User类上实现这两个接口都很好吗?同时实施IPrincipal&IIdentity是好还是不好?
4
A
回答
6
通常,用户和用户交互的安全上下文是不同的事情,因此如果以通用方式建模,这些应该与IPrincipal和IIdentity接口一样分离。 (你可以想象应用程序中同一个用户可以有不同的角色来与系统进行交互)。
有两个概念相同的应用程序,在这种情况下,我认为你可以安全地使用一个类实现两个接口。如果您不直接通过IPrincial和IIdentity接口将实现类直接暴露给应用程序逻辑,那么尤其如此。如果你保持这种分离,你可以随时重构你的类,而不会破坏应用程序逻辑。
你应该记住另一个方面:通常设置为用户的安全上下文,而不是建立一个身份(你需要获取权限等)更昂贵。但是,在某些情况下,应用程序只是指用户,但不需要具有正确配置的安全上下文。在这些情况下,初始化用作身份和主体的用户类实例可能是性能问题。 (当然,你也可以通过其他技术来解决这个问题,不仅仅是分开课程)。
最后,你还应该考虑,无论你是想用你自己的用户类来实现IIdentity/IPrincipal,还是只想填充GenericPrincipal/GenericIdentity实例。这里最重要的事实是,IPrincipal(和IIdentity)实例必须是可序列化的,因为它们可能会转到其他AppDomains。设置一个可在AppDomain中轻松序列化和反序列化的IPrincipal实现并非易事,需要特别小心。所以除非你需要特殊的角色检查,否则我会推荐使用GenericPrincipal/GenericIdentity。 (详见这里:http://sontek.vox.com/library/post/re-iprincipal-iidentity-ihttpmodule-serializable.html)
相关问题
- 1. MembershipProvider,IPrincipal,IIdentity?
- 2. 重构好还是不好?
- 3. 实体框架和IPrincipal/IIdentity的实现
- 4. IIdentity购物车IPrincipal
- 5. 模拟IIdentity和IPrincipal
- 6. 是不是还好用AuthenticationContext时从ADAL
- 7. 将用户存储在IPrincipal/IIdentity中有什么好处?
- 8. 我的fstream不好还是不好()?
- 9. 如果用户类实现IPrincipal和IIdentity
- 10. 声明是更好还是相同?
- 11. 什么是更好的实施策略?
- 12. 是DroidText还好吗?
- 13. 施放还是不施放?
- 14. 实用程序类别..好还是坏?
- 15. C++中的大型抽象类是好还是不好?
- 16. 在存储过程中使用@@标识是好还是不好?
- 17. Java流程服务器是好还是不好?
- 18. 在mysql中解释更高的行数是好还是不好?
- 19. 保险是好还是不好的方式?
- 20. 我的线程设计是好还是不好?
- 21. 使用javascript创建html内容是好还是不好
- 22. 问题实施的IPrincipal
- 23. 这是最好的ForeignKey还是选择?有什么不同?
- 24. 它是好还是不好有临时字段来保存模块
- 25. 每秒限制访问整个Web脚本:好主意还是不好?如何实施?
- 26. IDENTITY列 - 好还是坏?
- 27. Qt还是j2me更好?
- 28. 多表好还是坏?
- 29. 内联元素中的div:不好还是不好?
- 30. Javascript - 使用参数关闭,不好还是不好?