Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Простое разграничение доступа, админ или нет 
:(
    Опции темы
Moid
  Дата 14.7.2009, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 396
Регистрация: 27.3.2006

Репутация: нет
Всего: 3



К вин приложению нужно сделать элементарную проверку на права доступа: обладает ли пользователь правами администратора в программе или нет.

Использую SQLServer.
В базе создал таблицу пользователей с полями:

Login
Password
IsAdmin
FirstName
LastName

Встал вопрос как хранить пароль??? В SQL нет типа данных аналагочных базе ACCESS "PASSWORD".

Так каким же образом быстро можно реализовать разграничение прав?


--------------------
"Всё должно быть сделано настолько простым, насколько это возможно, но не проще" (с) А.Эйнштейн
PM MAIL   Вверх
IGV
Дата 14.7.2009, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 1.4.2008

Репутация: нет
Всего: 2



Ну как вариант шифровать пароль в приложении, а потом уже его в базу записывать.
Вот когда-то писал для себя, может поможет
Код

  public class Crypt
  {
    /// <summary>
    /// ключевое слово
    /// </summary>
    private static string word = "bla-bla-bla";
    private static string password = null;

    public static void LoadDefaultPassword()
    {
      SetPassword("administrator");
    }

    public static string GetPassword()
    {
      if (password == null)
      {
        StreamReader sr = File.OpenText(Application.StartupPath + @"\password.pass");
        password = Decrypt(sr.ReadLine());
        sr.Close();
      }
      return password;
    }

    public static void SetPassword(string newPassword)
    {
      StreamWriter sw = File.CreateText(Application.StartupPath + @"\password.pass");
      sw.WriteLine(Encrypt(newPassword));
      password = newPassword;
      sw.Close();
    }

    private static byte[] Encrypt(byte[] data)
    {
      SymmetricAlgorithm sa = Rijndael.Create();
      ICryptoTransform ct = sa.CreateEncryptor(
        (new PasswordDeriveBytes(word, null)).GetBytes(16),
        new byte[16]);
      MemoryStream ms = new MemoryStream();
      CryptoStream cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);

      cs.Write(data, 0, data.Length);
      cs.FlushFinalBlock();

      return ms.ToArray();
    }

    public static string Encrypt (string data)
    {
      return Convert.ToBase64String(Encrypt(Encoding.UTF8.GetBytes(data)));
    }

    public static string Decrypt (string data)
    {
      CryptoStream cs = InternalDecrypt(Convert.FromBase64String(data));
      StreamReader sr = new StreamReader(cs);
      return sr.ReadToEnd();
    }

    private static CryptoStream InternalDecrypt (byte[] data)
    {
      SymmetricAlgorithm sa = Rijndael.Create();
      ICryptoTransform ct = sa.CreateDecryptor(
               (new PasswordDeriveBytes(word, null)).GetBytes(16),
               new byte[16]);
      MemoryStream ms = new MemoryStream(data);
      return new CryptoStream(ms, ct, CryptoStreamMode.Read);
    }
  }


Это сообщение отредактировал(а) IGV - 14.7.2009, 11:42
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0404 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.