[ELMA3] Автоматическая генерация паролей
При создании новых пользователей может возникнуть необходимость сгенерировать пароли в автоматическом режиме. Особенно актуален этот метод при одновременном создании большого количества пользователей. Генерацию и запись паролей можно осуществить с помощью сценария. Для этого необходимо создать сценарий (например, в процессе). Добавить метод:
1 2 3 4 5 6 7 8 9 10 11 12 | public static string GetPass(Random r, int x ) { string pass= "" ; while (pass.Length < x) { Char c = ( char )r.Next(33, 125); //33, 125 это границы используемых символов if (Char.IsLetterOrDigit(c)) pass += c; } return pass; } |
Метод принимает Random и число, возвращает строчку с паролем. Число отвечает за длину пароля.
Сценарий ниже позволяет сгенерировать и присвоить пароль выбранному пользователю системы, а затем сохранить данные пользователя на диске сервера.
Для использования этого сценария не обязательно публиковать и запускать процесс. Достаточно запустить его в режиме эмуляции с отключенным откатом произведенных изменений.
Данный сценарий реализован стандартными методами C# и ELMA, и не требует доработки. В ходе его исполнения, каждому пользователю генерируется уникальный пароль. После генерации пароля, ФИО, логин и пароль пользователя записываются в .txt файл на сервере
1 2 3 4 5 6 7 8 9 10 11 12 13 | //заголовок "таблицы" string text = "ФИО \\ Login \\ Password" + Environment.NewLine + Environment.NewLine; //загружаем всех пользователей var r = new Random(); if (context.User != null ) { string tempPassword = GetPass(r, 8); //в базе пароли хранятся в зашифрованном виде, поэтому записать их в файл нужно до записи пароля пользователю text += context.User.FullName + " \\ " + context.User.UserName + " \\ " + tempPassword + Environment.NewLine + Environment.NewLine; //метод PasswordReset принимает ID пользователя и новый пароль UserManager.Instance.PasswordReset(context.User.Id, tempPassword); } //запись данных в файл, первый аргумент путь до файла, если файла не существует, он будет создан System.IO.File.WriteAllText( "C:\\Login.txt" , text); |
Для работы сценария необходимо подключить пространства имен:
1 2 | using EleWise.ELMA.Security.Managers; using System.IO |
Примеры файла с данными пользователя прикреплен к статье.