我有以下ntier应用程序:MVC>服务>存储库>域.我正在使用Forms身份验证.在我的MVC层之外使用Thread.CurrentPrincipal来获取我的应用程序的当前登录用户或者我应该使用HttpContext.Current.User是否安全?
我问的原因是Thread.CurrentPrincipal似乎存在一些问题,但我谨慎地在我的MVC层之外添加对System.Web的引用,以防我将来需要提供非web字体结尾.
更新
我一直在遵循目前收到的建议,将用户名传递给服务,作为被调用方法的参数的一部分,这导致我原始问题的改进.我需要能够检查用户是否在我的许多Service和Domain方法中担任特定角色.似乎有几个解决方案,只是想知道哪个是最好的方法:
>将整个HttpContext.Current.User作为参数传递,而不仅仅是用户名.
>在我的Web层之外调用Thread.CurrentPrincipal并使用它.但是我如何确保它等于HttpContext.Current.User?
>坚持传递目前为止建议的用户名,然后使用Roles.IsUserInRole.这种方法的问题是它需要引用System.Web,我觉得在我的MVC层之外是不正确的.
你怎么建议我继续?
解决方法
我不会这样做,HttpContext.Current.User特定于您的Web层.
为什么不将用户名注入服务层?