【发布时间】:2012-07-18 14:37:24
【问题描述】:
我有以下 ntier 应用程序:MVC > 服务 > 存储库 > 域。我正在使用表单身份验证。在我的 MVC 层之外使用 Thread.CurrentPrincipal 来获取我的应用程序的当前登录用户是否安全,或者我应该使用 HttpContext.Current.User 吗?
我问的原因是 Thread.CurrentPrincipal 似乎存在一些问题,但我谨慎地在 MVC 层之外添加对 System.Web 的引用,以防我将来需要提供非 Web 字体端.
更新
到目前为止,我一直遵循收到的建议,将用户名作为被调用方法的参数的一部分传递到服务中,这导致了我最初的问题的改进。我需要能够检查用户是否在我的许多服务和域方法中处于特定角色。似乎有几个解决方案,只是想知道哪种方法最好:
- 将整个 HttpContext.Current.User 作为参数传递,而不仅仅是用户名。
- 在我的 Web 层之外调用 Thread.CurrentPrincipal 并使用它。但是如何确保它等于 HttpContext.Current.User?
- 坚持按照目前的建议传递用户名,然后使用 Roles.IsUserInRole。这种方法的问题是它需要一个对 System.Web 的引用,我觉得这在我的 MVC 层之外是不正确的。
您建议我如何进行?
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-3 authentication forms-authentication iprincipal