aspnet-user-identity в имени файла, но это не всегда работает - PullRequest
0 голосов
/ 03 апреля 2019

Сайт будет использовать проверку подлинности cookie.Итак, вот пример чего-то в моем nlog.config (возможно, меня интересует использование NLog):

  <targets>
    <!-- write logs to file  -->
    <target xsi:type="File" name="allfile" fileName="c:\temp\${aspnet-user-identity}-nlog-all-${shortdate}.log"
            layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}" />

    <!-- another file log, only own logs. Uses some ASP.NET core renderers -->
    <target xsi:type="File" name="ownFile-web" fileName="c:\temp\${aspnet-user-identity}-nlog-own-${shortdate}.log"
            layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}" />
  </targets>

Для обеих записей посмотрите на $ {aspnet-user-identity}.

Как только пользователь войдет в систему, все будет записано в MyUserName-nlog-all-2019-04-03.log.Таким образом, я могу войти в систему для каждого пользователя.

Я вижу, что, несмотря на то, что я вошел в систему, есть определенные вещи, которые НЕ записываются в MyUserName-nlog-all-2019-04-03.журнал.Вместо этого они записываются в -nlog-all-2019-04-03.log.Заметьте ведущую черту?И нет имени пользователя?Я имею в виду, что большинство записывается в «MyUser», но есть некоторые вещи, которые этого не делают.

Мой маленький тестовый проект имеет контроллер учетной записи / представление для входа в систему, а затем простой контроллер / представление, на которое они направленыкак только они вошли в систему.

Представьте себе, что вы попадаете на страницу входа в систему, входите в систему и получаете перенаправление на первую страницу.Что ж, после этого небольшого теста я вижу этот файл -nlog с записанным в нем (и это после того, как они вошли в систему):

    2019 - 04 - 03 15:53:39.2429 | 2 | INFO | Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker | Executed action method TestApp1.Controllers.AccountController.Login(TestApp1), returned result Microsoft.AspNetCore.Mvc.RedirectToActionResult in 2263.1283ms.
    2019 - 04 - 03 15:53:39.2490 | 1 | INFO | Microsoft.AspNetCore.Mvc.RedirectToActionResult | Executing RedirectResult, redirecting to /.
    2019 - 04 - 03 15:53:39.2490 | 2 | INFO | Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker | Executed action TestApp1.Controllers.AccountController.Login(TestApp1) in 2306.6386ms
    2019 - 04 - 03 15:53:39.2490 | 1 | INFO | Microsoft.AspNetCore.Routing.EndpointMiddleware | Executed endpoint 'TestApp1.Controllers.AccountController.Login (TestApp1)'
    2019 - 04 - 03 15:53:39.2490 | 2 | INFO | Microsoft.AspNetCore.Hosting.Internal.WebHost | Request finished in 2328.4375ms 302
    2019 - 04 - 03 15:53:39.2490 | 1 | INFO | Microsoft.AspNetCore.Hosting.Internal.WebHost | Request starting HTTP/ 1.1 GET http://localhost:61610/   
    2019 - 04 - 03 15:53:40.3210 | 1 | INFO | Microsoft.AspNetCore.Hosting.Internal.WebHost | Request starting HTTP/ 1.1 POST http://localhost:61610/HomeController/Read application/x-www-form-urlencoded; charset=UTF-8 20 

Почему это происходит?И как мне получить все, что записано в конкретный файл «Пользователи» (после того, как они вошли в систему)?

1 Ответ

1 голос
/ 03 апреля 2019

На основании того, что вы разместили здесь, происходит перенаправление;RedirectToAction возвращается.Перенаправления сбрасывают всю информацию cookie, поэтому пользователь не известен прямо сейчас.

У вас всегда будут ситуации, когда пользовательский контекст неизвестен.Например, когда пользователь заходит на сайт, но перед тем, как войти в систему.

...