asp.net-mvc – 获取Web层之外的当前Principal

我有以下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层.

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

相关文章

项目要求通过网站上传大文件,比如视频文件,通过摸索实现了文件分片来上传,然后后台进行合并。 使用了...
安装新版本的Nginx(vim /etc/yum.repos.d/nginx.repo) [nginx-stable] name=nginx stable repo baseu...
什么是 SignalR ASP.NET Core ASP.NET Core SignalR 是一种开放源代码库,可简化将实时 web 功...
在Windows下使用Docker,我们选择Docker Desktop这个软件,非常方便。 ## Docker Desktop介绍及安装 Do...
项目开始设计的是运行在windows下,所以一开始采用的是windows服务模式来获取多媒体文件信息,后来要求...
银河麒麟高级服务器操作系统V10是针对企业级关键业务,适应虚拟化、云计算、大数据、工业互联网时代对主...