Как дать идентификатор анонимному пользователю, чтобы запомнить его данные в базе данных?

Я хочу дать идентификатор пользователю, который открывает мой веб-сайт и добавляет некоторые элементы в свою "корзину", даже если они не зарегистрированы в службе. Просто добавьте, а затем перейдите к регистрации, когда они хотят проверить. И если они не перейдут к оформлению заказа после добавления материала, затем закройте браузер, вернитесь через 2 дня, я хочу получить их предыдущие заказы из базы данных.

Как я могу дать этот идентификатор, уникальный для пользователя, и запомнить его при следующем посещении?

Я предполагаю, что мне нужно использовать куки, но не знаете как именно?

2 ответа

Решение

Я сделал нечто подобное, используя куки и базу данных. Таким образом, в C# у вас может быть таблица Basket, и в этой таблице есть столбец UserId и столбец ProductId. Затем из вашего контроллера вы извлекаете корзину пользователей, в которой указан идентификатор пользователя в базе данных.

Установка куки:

string cookieValue = Guid.NewGuid().ToString();
//Creating a cookie which has the name "UserId"
HttpCookie userIdCookie = new HttpCookie("userId");
userIdCookie.Value = cookieValue;
//This is where you would state how long you would want the cookie on the client. In your instance 2 days later.
userIdCookie.Expires = DateTime.Now.AddDays(3);
Response.SetCookie(userIdCookie);

Затем, чтобы получить куки в контроллере:

public ActionResult Basket()
{
    //Getting the cookie which has the name "userId" and assigning that to a variable.
    string userId =  Request.Cookies.Get("userId").Value;
    var basket = _context.Basket.Where(x => x.UserId == userId);       
    return View(basket);
}

Примечание. Я использовал здесь Request.Cookies.Get("userId"), потому что если вы используете Response.Cookies.Get("userId"), а cookie "UserId" не существует, то он создаст для вас cookie.

Когда пользователь добавляет что-то в корзину, запустите javascript следующим образом:

 var storedId = localStorage.getItem('myId');

if(storedId == null)
{
   storedId = parseInt(Math.Random * 1000); // or better, use UUID generation from here: https://stackru.com/questions/105034/create-guid-uuid-in-javascript

   localStorage.setItem('myId', storedId); // for future reference
}

Теперь, когда вы добавляете что-то в корзину, публикуйте идентификатор, например

контроллер:

[HttpPost]
public ActionResult AddToCard(string userId, string productId, int quantity)
{
  /// perform your saving to db
}

Ajax (или любой другой фреймворк, который вы используете):

$.post('/somewhere', {userId: storedId, productId: 'whatever', quantity: 1});
Другие вопросы по тегам