GenericPrincipal, назначенный потоку в базовом классе, не работает в унаследованном классе: NancyFX - PullRequest
0 голосов
/ 10 марта 2020

мы используем NancyFX V 2.0.0 с VS2019, и я хочу установить текущий субъект потока в базовом классе, чтобы при вызове модуля он использовал указанный субъект потока в модуле.

Кому Для этого я использую хук Before NancyModule, а затем вызываю метод для установки принципала потока.

Мой хук базового модуля похож на следующее:

public BaseModule(string modulePath, ILogger logger) : base(modulePath)
{
            _logger = logger;

            Before += ctx =>
            {
                SetThreadPrincipal(ctx);
                return null;
            };

            After += ctx =>
            {

            };

}

Метод SetThreadPrincipal просто создает новый GenericPrincipal и затем назначает принципала текущему потоку, например,

GenericIdentity MyIdentity = new GenericIdentity(context.CurrentUser.Identity.Name);

                    // Create generic principal.  
                    String[] MyStringArray = { "CustomerUser" };
                    GenericPrincipal MyPrincipal = new GenericPrincipal(MyIdentity, MyStringArray);    
                    Thread.CurrentPrincipal = MyPrincipal;

Затем в моем классе Nancy Module, который наследует BaseModule, у меня есть простой маршрут, например

 public class CustomerModule : BaseModule
 {  
         Get("/api/customer/{id}", parameters =>
         {                                               
                // **Calling System.Threading.Thread.CurrentPrincipal here returns a different Principal than what was specified in the Base Module**
         }
}

. У меня возникает проблема, если я вызываю System.Threading.Thread.CurrentPrincipal в методе CustomerModule / Customer над CurrentPrincipal, который отличается от принципала, указанного в BaseClass.

Я бы подумал, что подключиться к Нэнси Перед запросом и указанием участника потока в базовом классе будет задана директор по рекламе в самом модуле, который реализовал класс.

Любая помощь приветствуется Спасибо

...