Я использую один проект asp.net, этот проект настроен в IIS. Веб-сайт открыт для всех, когда я просматриваю код на странице asp.net, его окно регистрации «id предприятия» и позволяет всем пользователям просматривать все страницы aspx.Ограничить доступ ко всем страницам asp.net
Теперь моя команда менеджеров попросила нас ограничить тех, кто находится на уровне младших сотрудников (Junior engg, Developer, software engg).
Я написал запрос, передав идентификатор предприятия и подтвердив оценку, если его младший уровень, возвращающий значения «0», иначе возвращающие значения «1».
Мои вопросы: я не хочу идти и редактировать каждую страницу и проверять этот запрос и ограничивать каждую страницу.
вы можете предложить, как я могу реализовать простейший и лучший способ ограничить пользователей.
Спасибо, --------------------------------------- Обновление по 09/24/2015
Index.aspx
protected void Page_Load(object sender, EventArgs e)
{
string UserStatus = UtilFunctions.ValidateUser();
Response.Write(UserStatus);
if (UserStatus == "0")
{
Response.Write("<div><font color=red><h1>You are not authorized to view this page</h1></font></div>");
Response.End();
}
}
Utilifunctions.cs
public static String ValidateUser()
{
string CurrentUser = getLoggedOnUser();
using (System.Data.SqlClient.SqlConnection myConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["TestDB"].ConnectionString))
{
using (SqlCommand myCommand = myConnection.CreateCommand())
{
myConnection.Open();//Opens the Connection
myCommand.CommandText = "Select Permission From Temp_Validate Where EnterpriseId='" + CurrentUser + "'";
SqlDataReader IDReader = myCommand.ExecuteReader(); //Gets the ID
IDReader.Read();
string UserStatus = IDReader["Permission"].ToString();
IDReader.Close();
return UserStatus;
}
}
Я реализовал выше functionalite на моей странице index.aspx, если UserStatus равен «0», он будет отображать «Вы не authrized для просмотра сообщения «и это закончится.
У меня около 30 страниц aspx, в настоящее время работает в Production. Я не хочу, чтобы включить один и тот же код (index.aspx) в каждую загрузку страницы, чтобы остановить проверку пользователя.
Не могли бы вы предложить, как я могу реализовать без редактирования всех страниц.
Обновлено 09/28: Utilifunction.cs
public static String getLoggedOnUser()
{
String user = HttpContext.Current.User.Identity.Name.Substring(HttpContext.Current.User.Identity.Name.IndexOf("\\") + 1);
if (user == "") user = "anonymous";
string UserStatus = IsValidUser(user);
if (UserStatus == "0")
{
HttpContext.Current.Response.Redirect("PSF_Error.aspx", true);
}
return user;
}
public static String IsValidUser(string currentUser)
{
using (System.Data.SqlClient.SqlConnection myConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["Test"].ConnectionString))
{
using (SqlCommand myCommand = myConnection.CreateCommand())
{
//Gets email of the creator of current user
myConnection.Open();//Opens the Connection
myCommand.CommandText = "Select Permission From Temp_Validate Where EnterpriseId='" + currentUser + "'";
SqlDataReader IDReader = myCommand.ExecuteReader(); //Gets the ID
IDReader.Read();
string UserStatus = IDReader["Permission"].ToString();
IDReader.Close();
return UserStatus;
}
}
}
index.aspx
Page_load
{
string CurrentUser = UtilFunctions.getLoggedOnUser();
}
Где вы принимаете оценки валидации? то есть, как приложение знает, является ли пользователь младшим? Как правило, доступ к страницам должен быть задан с использованием ролей и файла web.config. Вы можете увидеть очень простой ответ на аналогичный вопрос, здесь: http://forums.asp.net/t/1434380.aspx?Restricting+Access+to+Pages+by+Roles В принципе, вы устанавливаете доступ , на основе поэтапных или каталогов по каталогам. Я не уверен, что это работает для вашего проекта. – dylanthelion
У меня есть две таблицы «employee» - идентификатор сотрудника, имя, название, вторая таблица: титры Название, имя, уровень. Например: если я присоединяюсь к обеим таблицам, имя сотрудника: Mark, 12 (titleID), Подрядчик (Заголовок), S4 (Уровень), я не хочу разрешать пользователям уровня s4 на всех страницах. – user3442289
Возможно, вы хотите реализовать своего поставщика роли. как только у вас будет настройка и настройка (в web.config), вы можете сделать это в коде позади. – g2000