Выпадающие значения в соответствии с правами
выпадающий список значений по права я имею форму.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
Похоже, вы храните пароли в обычном тексте. Это очень плохая идея.
Вы должны всегда хранить только соленый хэш пароля пользователя, используя уникальную соль для каждой записи.
Безопасная Аутентификация Паролем Объясняется Просто[^]
Соленое хеширование паролей - все правильно[^]