Je mets en place un projet asp.net, ce projet est configuré dans IIS. Le site est ouvert à tout le monde, quand je revois le code sur la page asp.net, sa fenêtre de vérification se connecte "id d'entreprise" et permet à tous les utilisateurs de voir toutes les pages ASPX. Maintenant, mon équipe de gestion nous a demandé de restreindre ceux qui sont sous les employés de niveau junior. (Junior engg, développeur, logiciel engg).Restreindre l'accès à toutes les pages asp.net
J'ai écrit la requête en transmettant l'identifiant d'entreprise et en validant la note, si elle est de niveau junior, en retournant des valeurs "0", sinon en retournant des valeurs "1".
Mes questions sont, je ne veux pas aller et éditer chaque page et vérifier cette requête et restreindre chaque page.
pouvez-vous s'il vous plaît suggérer, comment puis-je mettre en œuvre le plus simple et le meilleur moyen de restreindre les utilisateurs.
Merci, --------------------------------------- Mise à jour le 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;
}
}
I mis en œuvre le functionalite ci-dessus dans ma page index.aspx, si le userstatus égal à "0", il affichera la « Vous n'êtes pas authrized pour afficher ce message "et ça va finir.
J'ai environ 30 pages aspx, actuellement en production. Je ne veux pas aller inclure le même code (index.aspx) dans chaque chargement de page pour arrêter la validation de l'utilisateur.
pouvez-vous s'il vous plaît suggérer comment puis-je mettre en œuvre sans modifier toutes les pages.
Mis à jour le 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();
}
Où obtenez-vous les valeurs de validation de qualité? c'est-à-dire, comment l'application sait-elle si un utilisateur est de niveau junior? Généralement, l'accès à la page doit être défini à l'aide des rôles et du fichier web.config. Vous pouvez voir une réponse très simple à une question similaire, ici: http://forums.asp.net/t/1434380.aspx?Restricting+Access+to+Pages+by+Roles Fondamentalement, vous définissez l'accès , basé sur des règles page par page ou répertoire par répertoire. Je ne suis pas sûr que cela fonctionne pour votre projet, cependant. – dylanthelion
J'ai deux tables "employé" - ID employé, nom, titre, deuxième table: Titres Titre Id, Nom, niveau. exemple: si je joins les deux tables, nom de l'employé: Mark, 12 (titleID), Contractor (Titre), S4 (Level), je ne veux pas autoriser les utilisateurs de niveau s4 dans toutes les pages. – user3442289
Vous souhaitez probablement implémenter votre fournisseur de rôle personnalisé. Une fois que vous l'avez installé et configuré (dans web.config), vous pouvez le faire dans le code derrière. – g2000