我有以下ntier应用程序:MVC>服务>存储库>域。我正在使用表单身份验证。在MVC层之外使用Thread.CurrentPrincipal来获取应用程序的当前登录用户是否安全?还是应该使用HttpContext.Current.User?

我问的原因似乎是Thread.CurrentPrincipal周围存在一些问题,但是我谨慎地在MVC层之外添加对System.Web的引用,以防将来需要提供非Web字体结尾。

更新资料

到目前为止,我一直在遵循将用户名传递到服务中的建议,该用户名作为对所调用方法的参数的一部分,这使我的原始问题得到了改进。我需要能够检查用户在我的许多Service和Domain方法中是否处于特定角色。似乎有两种解决方案,只是想知道哪种是最佳的处理方式:


将整个HttpContext.Current.User传递为参数,而不仅仅是用户名。
在我的网络层之外调用Thread.CurrentPrincipal并使用它。但是如何确保它等于HttpContext.Current.User?
坚持按照建议的方式传入用户名,然后使用Roles.IsUserInRole。这种方法的问题在于它需要对System.Web的引用,我认为在我的MVC层之外这是不正确的。


您如何建议我继续?

最佳答案

我也不做,HttpContext.Current.User是特定于您的Web层的。

为什么不将用户名注入服务层?

07-24 09:33