ASP.Net MVC-генерировать новый HttpContext.Session.SessionID после запроса - PullRequest
0 голосов
/ 05 марта 2019

Я создал приложение, используя asp.net MVC при входе в систему. Я сохраняю значение идентификатора сеанса, используя

Session["SessionId"] = HttpContext.session.SessionId

во время сеанса, когда пользователь создает новый запрос настраница под названием «NewQuotee» Я хотел бы создать новый SessionId и назначить новое значение для Session["SessionId"] Как я могу это сделать?

1 Ответ

0 голосов
/ 07 марта 2019

, поэтому после дальнейшего чтения их нет прямого способа запросить браузер клиента создать новый идентификатор сеанса, даже если я использовал Session.Clear (), Session.RemoveAll () или Session.Abandon (), он не будет обслуживать мойпотребности (вы можете прочитать о разнице в этом художественном Link , это было хорошее чтение), поэтому в конце дня я использовал sessionid в качестве общей строки для идентификации записей базы данных для оператора обновления взапрос конца страницы, поэтому я создал функцию, которая генерирует случайную 20-символьную строку при каждом вызове и присваивает значение глобальному var, этот var можно использовать в моих запросах на вставку / обновление, метод, который я создал для генерации случайной строки:следующим образом: -

public static string GenerateSessionID()
    {
        char[] characters = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".ToCharArray();
        Random r = new Random();
        System.Threading.Thread.Sleep(10);
        string randomstring = "";
        for (int i = 0; i < 20; i++)
        {
            randomstring += characters[r.Next(0, 60)].ToString();
        }

        return randomstring;
    }

, чтобы помочь понять код

char[] characters = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".ToCharArray();

эта строка кода создаст массив символов, включая все буквы чисел в нижнем и верхнем регистре, вы можете поставитьлюбые символы, которые вы хотели бы

Random r = new Random();

здесь вы создаете объект "r" случайного класса

string randomstring = "";

простосоздав строку для хранения значения сгенерированного ключа

for (int i = 0; i < 20; i++)

, вы можете определить длину случайного ключа, увеличив или уменьшив максимальное значение «i»

 r.Next(0, 60)

методаr.Next (0,60) возвращает случайное число между 0, 60;r.Next (мин, макс);Вы можете вызвать r.Next (), он получит любое случайное число, которое я определил минимальным и максимальным значением, потому что я буду использовать число, сгенерированное как индекс для массива символов

randomstring += characters[r.Next(0, 60)].ToString();

Полагаю, теперь оно самообъяснил, что каждый раз, когда вы выполняете цикл, символ в массиве символов с индексом random будет соединяться со строкой random

System.Threading.Thread.Sleep(10);

. Теперь я использовал thread.sleep для 10 mili-sesond, когда вы продолжаете вызыватьФункция random .next () без каких-либо разрывов будет возвращать то же значение, я кратко читал об этом, я продолжал уменьшать значение милисекунды, пока не достиг 2, и это было ударом и промахом, иногда это порождает новое значение иногдане так просто, чтобы быть в безопасности, я поставил значение как 10

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...