ASP.NET, как проверить роль пользователя из PostgreSQL дБ? - PullRequest
0 голосов
/ 12 сентября 2018

Я новичок в C # и asp.net.

В моем проекте asp.net у меня есть выпадающий список, который показывает информацию из базы данных postgreSQL в зависимости от того, какой пользователь вошел в систему.Вот мой код:

 protected void Button6_Click(object sender, EventArgs e)
    {
   //here's GridView settings, connections strings etc...

 NpgsqlCommand cmd = new NpgsqlCommand();
            NpgsqlDataAdapter sqlDa1 = new NpgsqlDataAdapter("SELECT * FROM vacations", conn); //show by executor
            DataTable dtbl1 = new DataTable();
            if ((string)Session["Name"] == "Smith")
            {
                sqlDa1.Fill(dtbl1);
                GridView1.DataSource = dtbl1;
                GridView1.DataBind();
            }
            else System.Diagnostics.Debug.WriteLine("You do not have permissions!!!");

Проблема в том, что у меня будет не только один пользователь, поэтому я не могу добавить каждого нового пользователя в свой оператор if () {} else .Как я могу автоматически проверять права пользователей и зависит от того, показывать / не показывать информацию

1 Ответ

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

Решением будет создание разных ролей, с которыми у вас связаны разные права.Например, r_visitor и r_administrator.Вы должны добавить каждого пользователя к соответствующей роли (ролям)

Затем вы можете предоставить разрешения ролям на уровне БД, и, как вы просите, вы можете проверить в своем приложении, есть ли у пользователя илине заданная роль, используя следующий запрос, который возвращает логическое значение:

SELECT EXISTS(
  SELECT b.rolname rname,
         c.rolname mname 
  FROM pg_auth_members a, 
       pg_roles b, 
       pg_roles c  
  WHERE a.roleid=b.oid 
   AND a.member = c.oid 
   AND b.rolname = 'r_visitor' 
   AND c.rolname='johnDoe');

Если вы хотите знать о унаследованных ролях (userA принадлежит R1, который является частью R2 -> мы хотим знать, имеет ли userAПривилегии R2), посмотрите на этот ответ , в котором реализован рекурсивный взгляд

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