Authentification C# SqlServer2005
Bonjour
j'ai une table Gestionnaire(idGest,Login,Pwd,Role)..je cherche a réaliser une authentification selon le rôle de l'utilisateur s'il est "admin" une page "Accueil_admin" s'ouvre sinon la page "accueil" s'ouvre
voila mon Web.Config:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
| <?xml version="1.0"?>
<!--
For more information on how to configure your ASP.NET application, please visit
http://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
<connectionStrings>
<add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true"
providerName="System.Data.SqlClient" />
<add name="bdSPRConnectionString24" connectionString="Data Source=amine;Initial Catalog=bdSPR;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<compilation debug="true" targetFramework="4.0" />
<authentication mode="Forms">
<forms loginUrl="~/Account/Login.aspx" timeout="2880" />
</authentication>
<!-- par défaut aucun utilisateur non authentifié ne peut accéder au site -->
<authorization>
<deny users="?"/>
</authorization>
<membership>
<providers>
<clear/>
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices"
enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
applicationName="/" />
</providers>
</membership>
<profile>
<providers>
<clear/>
<add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/>
</providers>
</profile>
<roleManager enabled="false">
<providers>
<clear/>
<add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
<add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
</providers>
</roleManager>
</system.web>
<location path="~/Account/WF_Accueil_Admin.aspx">
<system.web>
<!-- pour la Page1.aspx on autorise les roles Admins et Members et on refuse tous les autres -->
<authorization>
<allow roles="Admin"/>
<deny users="*"/>
</authorization>
</system.web>
</location>
<location path="~/Account/WF_Accueil.aspx">
<system.web>
<!-- pour la Page2.aspx on autorise le role Admins et on refuse tous les autres -->
<authorization>
<allow roles="user"/>
<deny users="*"/>
</authorization>
</system.web>
</location>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration> |
Login.aspx
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| <table>
<tr>
<td>Login:</td>
<td><input id="txtLogin" type="text" runat="server"/></td>
<td><ASP:RequiredFieldValidator ControlToValidate="txtLogin"
Display="Static" ErrorMessage="*" runat="server"
ID="vUserName" /></td>
</tr>
<tr>
<td>Password:</td>
<td><input id="txtPwd" type="password" runat="server"/></td>
<td><ASP:RequiredFieldValidator ControlToValidate="txtPwd"
Display="Static" ErrorMessage="*" runat="server"
ID="vUserPass" />
</td>
</tr>
<tr>
<td>Remember me:</td>
<td><ASP:CheckBox id="chkPersistCookie" runat="server" autopostback="false" /></td>
<td></td>
</tr>
</table>
<p>
<asp:Button ID="valid" runat="server" onclick="valid_Click" Text="valider" />
</p> |
Login.aspx.cs
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
| using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Web.Security;
namespace WebApplication1
{
public partial class WF_Authentification : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
private bool ValidateUser(string userName, string passWord)
{
SqlConnection conn;
SqlCommand cmd;
string lookupPassword = null;
// Vérifie la présence de userName non valide.
// userName ne doit pas être nul et doit comprendre entre 1 et 15 caractères.
if ((null == userName) || (0 == userName.Length) || (userName.Length > 15))
{
System.Diagnostics.Trace.WriteLine("[ValidateUser] Input validation of userName failed.");
return false;
}
// Vérifie la présence de passWord non valide.
// passWord ne doit pas être nul et doit comprendre entre 1 et 25 caractères.
if ((null == passWord) || (0 == passWord.Length) || (passWord.Length > 25))
{
System.Diagnostics.Trace.WriteLine("[ValidateUser] Input validation of passWord failed.");
return false;
}
try
{
// Contactez votre administrateur SQL Server afin d'obtenir une chaîne de connexion
// appropriée à utiliser pour la connexion à votre serveur SQL local.
conn = new SqlConnection("Data Source=.\\SQLEXPRESS;Integrated Security=True;User Instance=True");
conn.Open();
// Crée SqlCommand pour sélectionner le champ pwd dans la table d'utilisateurs étant donné le userName fourni.
cmd = new SqlCommand("Select Pwd from Gestionnaire where Login=@userName", conn);
cmd.Parameters.Add("@userName", SqlDbType.VarChar, 25);
cmd.Parameters["@userName"].Value = userName;
lookupPassword = (string)cmd.ExecuteScalar();
// Nettoie la commande et les objets de connexion.
cmd.Dispose();
conn.Dispose();
}
catch (Exception ex)
{
// Ajoute ici la gestion des erreurs pour le débogage.
// Ce message d'erreur ne doit pas être renvoyé à l'appelant.
System.Diagnostics.Trace.WriteLine("[ValidateUser] Exception " + ex.Message);
}
// Si aucun mot de passe n'est trouvé, retourne false.
if (null == lookupPassword)
{
// Vous pouvez écrire ici les échecs de tentative de connexion dans le journal des événements, pour une sécurité accrue.
return false;
}
// Compare lookupPassword et le passWord d'entrée à l'aide d'une comparaison sensible à la casse.
return (0 == string.Compare(lookupPassword, passWord, false));
}
protected void valid_Click(object sender, EventArgs e)
{
if (ValidateUser(txtLogin.Value, txtPwd.Value))
{
FormsAuthentication.RedirectFromLoginPage(txtLogin.Value,
chkPersistCookie.Checked);
}
else
Response.Redirect("WF_login.aspx", true);
}
}
} |
S'il vous plait aidez moi c'est la première fois que je crée une authentification j'ai trouvé un article et j'ai modifié Quelques lignes selon ce j'ai compris..
Merci d'avance :roll: