Как проверить не авторизованных пользователей в ASP.NET MVC 5 - PullRequest
0 голосов
/ 13 сентября 2018

К сожалению, я не нашел ответ, который подошел ко мне, поэтому я надеюсь, что кто-то может дать мне совет.

Я могу принимать IP пользователей, но он может быть динамичным, так что это не 100%гарантированно а также на одном ip может быть несколько пользователей.

Также я могу использовать anonymousIdentification .

<anonymousIdentification
        enabled="true"
        cookieless="UseCookies"
        cookieName=".ASPXANONYMOUS"
        cookieTimeout="30"
        cookiePath="/"
        cookieRequireSSL="false"
        cookieSlidingExpiration = "true"
        cookieProtection="Validation"
      />

Но он основан на куках, которые легко можно отключить или очистить.

Как я знаю, кто-то использует evercoockie , но я думаю, что это слишком грубо, может бытьЯ не прав.

Поэтому я хотел бы знать, возможно ли более надежно идентифицировать пользователей как для компьютеров, так и для мобильных устройств.

1 Ответ

0 голосов
/ 13 сентября 2018

Вы можете сгенерировать GUID для каждого гостя и сохранить его в файле cookie.Поэтому каждый раз, когда пользователь приходит, он проверяет наличие cookie.Затем вы можете использовать GUID в качестве идентификатора для других объектов вместо идентификатора пользователя.Я использовал эту систему для страницы, которая позволяет как гостям, так и пользователям пользоваться услугами.Это должен быть GUID, а не int, поэтому cookie не может быть обработан вручную.

    public Guid InitGuestCookie()
    {
        if (Request.Cookies.AllKeys.Contains(Utils.Constants.GuestId))
        {
            var id = Request.Cookies[Utils.Constants.GuestId];

            if (id != null)
            {
                var guid = new Guid(id.Value);
                // Make sure this guid exists as a registered guest
                var guest = _guestService.GetById(guid);
                if (guest != null)
                {
                    return guest.Id;
                }
            }
        }

        var newGuest = CreateGuest();
        var cookie = new HttpCookie(Utils.Constants.GuestId, newGuest.Id.ToString());
        Response.Cookies.Set(cookie);
        return newGuest.Id;
    }

    public Guid GuestId { get; set; }

    public Guest CreateGuest()
    {
        var guid = Guid.NewGuid();
        var newGuest = new Guest()
        {
            CreateDate = DateTime.Now,
            LastUsageDate = DateTime.Now,
            Id = guid,
        };

        _guestService.AddOrUpdate(newGuest);
        return newGuest;
    }

А в методе Init контроллера я вызываю:

    protected override void Initialize(RequestContext requestContext)
    {
        base.Initialize(requestContext);
        GuestId = InitGuestCookie();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...