super_user Ответов: 0

Выпадающие значения в соответствии с правами


выпадающий список значений по права я имею форму.aspx в том, что есть в выпадающем списке

<asp:Label ID="Label3" runat="server" Text="Select values"></asp:Label>
   <asp:DropDownList ID="regiondrop" runat="server" AutoPostBack="True"
   onselectedindexchanged="regiondrop_SelectedIndexChanged">
   </asp:DropDownList>

   <asp:RequiredFieldValidator controltovalidate="regiondrop" ID="RequiredFieldValidator1" runat="server" ErrorMessage="Select Region">
   </asp:RequiredFieldValidator>


Что я уже пробовал:

В этом дродауне есть ценности мутлильпе ..

e.g.
   Car
   Truck
   Bike
   Drink
   Factory


Есть еще одна страница входа в систему логин.aspx-файл .
Код входа в систему

protected void Button1_Click(object sender, EventArgs e)
       {
           try
           {
               //Label1.BackColor = "F8D8D7";
               loginmethod(txt_us.Text, txt_pwd.Text);

               Response.Redirect("WebForm1.aspx");
           }
           catch( Exception )
           {
               Label1.Text = ("Incorrect UserName/Password");
               Label1.Visible = true;
           }
           txt_us.Text = "";
           txt_pwd.Text = "";


       }
       public bool  loginmethod(string UserName,string Password)
       {
           TrackDataEntities1 td = new TrackDataEntities1();

          splogin1_Result sp = td.splogin1(UserName, Password).FirstOrDefault();
          if(sp.Password==txt_pwd.Text)
          {
              return true;
          }
          else
          {
              return false;
          }



       }


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

как я это делаю ?

F-ES Sitecore

Если (userisadmin)
{
regiondrop. DataSource = adminListOfData;
}
ещё
{
regiondrop. DataSource = nonAdminListOfData;
}

Это довольно просто.

super_user

но элемент управления выпадающим списком находится в form.aspx, а код входа-в login . aspx ... в выпадающем списке есть несколько значений, которые я извлекаю из базы данных и заполняю выпадающий список с помощью запроса linq ..

F-ES Sitecore

Вам нужен механизм, который позволит вашему сайту узнать на глобальном уровне, зарегистрирован ли пользователь, а также, возможно, какова его роль. Обычно это делается с помощью сеанса. Поэтому после того, как они войдут в систему, установите что-то вроде

Сессия ["UserID"] = userID;

вы можете использовать имя пользователя, если это все, что у вас есть. Затем другие страницы могут проверить, заполнен ли сеанс["UserID"], и если это так, то определить роль пользователей\права из их регистрационной информации.

super_user

да я знаю это но проблема в том что все значения находятся в одной таблице и я использую этот запрос для заполнения drodown

список ВАР = чай.tblReg.Методом asenumerable()
. Где (x =>! x.регион.Любой(char.IsDigit) и усилитель; & (х.Области != ""))
. GroupBy(x => x. Region)
.Выберите(х =>, новые { регион = х.Ключ, значение = x.Ключ })
.Список();




если (! страница.IsPostBack)
{
regiondrop. DataSource = список;
regiondrop.DataTextField = " Регион";
regiondrop.DataValueField = " Регион";
regiondrop.Привязку();

Label4.Видна = ложь;



}

F-ES Sitecore

Вам нужен какой-то способ узнать, какие поля должны использоваться для admin и non-admin. Возможно, у вас есть дополнительное поле в таблице регионов, которое говорит, допустимо ли это поле для пользователей admin или нет, а затем вы включаете его в поле Where.

super_user

хорошо, как я разделяю это, когда администратор входит в систему, то показывает эти значения в противном случае, когда пользователь входит в систему, то показывает эти значения .. как настроить выпадающее LINQ-запроса или СП входа..
Изменить процедуру [dbo].[сплогин]
@UserName nvarchar(50),
@Password nvarchar(50)
как
выберите имя пользователя, пароль из tbllogin
где
Имя пользователя=@имя пользователя и пароль=@пароль

F-ES Sitecore

список ВАР = чай.tblReg.Методом asenumerable()
. Где (x =>! x.регион.Любой(char.IsDigit) и усилитель; & (х.Области != "") &&усилителя; х.IsAdminField == userIsAdmin)

super_user

в login.aspx я сохраняю имя пользователя-это сессия

Сессия["логин"] = txt_us.Текст;
в форме.aspx-файл

Здесь сначала я создаю sp

Изменить процедуру [dbo].[spadminlist]
как
выберите регион из tblReg
где регион в ('фабрика')
затем я добавляю этот sp в форму. aspx

//этот запрос linq для выбора всех значений

список ВАР = чай.tblReg.Методом asenumerable()
. Где (x =>! x.регион.Любой(char.IsDigit) и усилитель; & (х.Области != ""))
. GroupBy(x => x. Region)
.Выберите(х =>, новые { регион = х.Ключ, значение = x.Ключ })
.Список();
//это для администратора

if (Session ["UserName"] = " admin")
{
List < spadminlistresult> admin = tea.spadminlist().Список();
}
и заполнение выпадающего списка

если (! страница.IsPostBack)
{
regiondrop. DataSource = список;
regiondrop.DataTextField = " Регион";
regiondrop.DataValueField = " Регион";
regiondrop.Привязку();

Label4.Видна = ложь;



}
но это показывает ошибку, а также то, как я заполняю выпадающий список admin sp, потому что есть запросы

Ошибка 3 не может неявно преобразовать тип 'object' в 'bool'. Существует явное преобразование (вы пропускаете приведение?)
как я это делаю ?

F-ES Sitecore

вам понадобится что-то вроде

// обратите внимание, что двойной "==", один " = " предназначен для назначения, а два-для сравнения
if (Session ["UserName"] = = " admin")
{
regiondrop.Источник данных = чай.spadminlist().Список();
}
ещё
{
список ВАР = чай.tblReg.Методом asenumerable ....
regiondrop. DataSource = список;
}

super_user

хорошо, я попробую это сделать ..

если (! страница.IsPostBack)
{
if (Session ["UserName"] = = " admin")
{
regiondrop.Источник данных = чай.spadminlist().Список();
regiondrop.DataTextField = " Регион";
regiondrop.DataValueField = " Регион";
regiondrop.Привязку();
Label4.Видна = ложь;

}
ещё
{
список ВАР = чай.tblReg.Методом asenumerable()
. Где (x =>! x.регион.Любой(char.IsDigit) и усилитель; & (х.Области != ""))
. GroupBy(x => x. Region)
.Выберите(х =>, новые { регион = х.Ключ, значение = x.Ключ })
.Список();
regiondrop. DataSource = список;
regiondrop.DataTextField = " Регион";
regiondrop.DataValueField = " Регион";
regiondrop.Привязку();
Label4.Видна = ложь;
}

}


это шоу предупреждает.. Предупреждение 3 Возможно непреднамеренное сравнение ссылок; чтобы получить сравнение значений, приведите левую часть к типу 'string'

F-ES Sitecore

По какой линии? Если это сравнение сеансов, то оно может понадобиться

if ((Session ["UserName"] as string) = = " admin")

или

если (сеанс["пользователь"] != нуль и усилитель; & (строки)сессии["логин"] == "админ")

super_user

спасибо теперь работает, когда я пытаюсь это сделать

super_user

но как выбрать конкретные значения для администратора и пользователя

Richard Deeming

Похоже, вы храните пароли в обычном тексте. Это очень плохая идея.

Вы должны всегда хранить только соленый хэш пароля пользователя, используя уникальную соль для каждой записи.

Безопасная Аутентификация Паролем Объясняется Просто[^]
Соленое хеширование паролей - все правильно[^]

0 Ответов