Je suis sûr que cela fonctionnera pour vous ...
2 étapes ... La première chose que vous devez faire est dans votre Global.asax.cs essayer de mettre ce
protected void Application_AcquireRequestState(Object sender, EventArgs e)
{
//Context.Handler in this state, we can access Session.
if (Context.Handler is IRequiresSessionState || Context.Handler is IReadOnlySessionState)
{
//Is it a session created in this request?
if (Session.IsNewSession)
{
//Am I already authenticated?
if (User.Identity.IsAuthenticated)
{
//if already authenticated, check if it is logon, if not, we just logout,
//else, we can continue the logon and reset the user identity.
string url = Request.Url.ToString();
if (url.IndexOf("Account/LogOn") < 0)
{
FormsAuthentication.SignOut();
Response.Redirect(Request.RawUrl);
}
}
}
else
{
//Am I already authenticated?
if (User.Identity.IsAuthenticated)
{
try
{
/// Here we try to get the current role of the user logged in from the session
SessionUser myRole = CurrentUser.GetRole();
string[] strRole;
switch (myRole)
{
case Role.ADSales:
{
string[] Roles = { "ADSales" };
strRole = Roles;
}
break;
case Role.DeptHead:
{
string[] Roles = { "DeptHead" };
strRole = Roles;
}
break;
case Role.ProductionCrew:
{
string[] Roles = { "ProductionCrew" };
strRole = Roles;
}
break;
case Role.Admin:
{
string[] Roles = { "Admin" };
strRole = Roles;
}
break;
default:
throw new AuthenticationException(ErrorEnum.Impossible);
//break;
}
Context.User = new System.Security.Principal.GenericPrincipal(Context.User.Identity, strRole);
}
catch (Exception)
{
string url = Request.Url.ToString();
if (url.IndexOf("Account/LogOn") < 0)
{
FormsAuthentication.SignOut();
Response.Redirect(Request.RawUrl);
}
}
}
}
}
}
suivant dans votre contrôleur ajoutez l'attribut
[Authorize(Roles = "ProductionCrew,DeptHead,Admin")]
public ActionResult Letter()
{
Return View();
}
Prenez note tha t Je n'ai pas inclus les ADSales dans les rôles, cela signifie que l'utilisateur qui a ce rôle ne peut pas accéder à la page Letter.
Espérons que cela aide. S'il vous plaît votez si cela vous a aidé et n'oubliez pas de le marquer comme la réponse si elle résout votre problème. Merci!
Une chose rapide: C'est sur le réseau et l'authentification Windows est utilisée pour identifier l'utilisateur. Pas d'authentification par formulaire. Donc il n'y a pas de concept de session – Rita