Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Jean-Christophe Brabant

SharePoint, HTML5, UX,PowerShell, ...
[SharePoint 2010] Supprimer la redirection automatique d’un “access denied”

Comment SharePoint gère les access denied ?

Par défaut SharePoint gère les problèmes d’accès en redirigeant automatiquement les utilisateurs vers une page en particulier : http://{site}/_layouts/AccessDenied.aspx

AccessDenied

Modifier ce comportement ?

Nous pourrions vouloir, cependant, réagir d’une manière différente et personnalisée à un “access denied”.

La propriété qui gère ce système est celle de la classe SPSecurity : CatchAccessDeniedException.

Une fois la propriété à true, nous pourrons catcher l’exception : “UnauthorizedAccessException

Je vous propose 3 manières différentes pour manipuler cette propriété :

- Manipulation directe de la classe SPSecurity

Voici un exemple de manipulation :

SPSite site = SPContext.Current.Site;
SPSecurity.CatchAccessDeniedException = true;
try
{
    // Code here
}
catch (UnauthorizedAccessException exception)
{
    // code here
    throw;
}
finally
{
    SPSecurity.CatchAccessDeniedException = false;
}

Attention cependant avec cette propriété. Il faut penser à la repasser à false, une fois notre traitement de l’exception effectué. Il faut aussi prendre garde aux exceptions qui pourraient être lancée dans le code, qui empêcherait de remettre la propriété à false.

- La propriété CatchAccessDeniedException de l’objet SPSite

C’est une propriété est une manière plus rapide d’accéder à celle de la classe SPSecurity. Elle se manipule exactement de la même manière que cette précédente.

SPSite site = SPContext.Current.Site;
site.CatchAccessDeniedException = true;
try
{
    // Code here
}
catch (UnauthorizedAccessException exception)
{
    // code here
    throw;
}
finally
{
    site.CatchAccessDeniedException = false;
}

Attention cependant avec cette propriété. Il faut penser à la repasser à false, une fois notre traitement de l’exception effectué. Il faut aussi prendre garde aux exceptions qui pourraient être lancée dans le code, qui empêcherait de remettre la propriété à false.

- La méthode SuppressAccessDeniedRedirectInScope

La méthode la plus intéressante ici, est la méthode statique SuppressAccessDeniedRedirectInScope() de la classe SPSecurity.

Cette méthode, va créer un contexte dans lequel la propriété citée plus haut :SPSecurity.CatchAccessDeniedException sera à true tout au long de son utilisation.
Cette propriété sera remise dans le même état qu’à l’entrée dans le contexte.

L’avantage de cette méthode est qu’il n’est plus nécessaire de gérer tous les cas possible pour remettre la propriété dans son état précédent une fois notre traitement terminé.

Pour l’utiliser, rien de plus simple :

using (new SPSecurity.SuppressAccessDeniedRedirectInScope())
{
    try
    {
        // Code here
    }
    catch (UnauthorizedAccessException ex)
    {
        // code here
    }
}
Vous savez tout maintenant pour réaliser des traitements lors de la levée d’une exception Access Denied.

Jicay

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Posted: lundi 11 juin 2012 09:00 par Lauzange

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Etendre le Team Web Access de TFS 2012 – Step 0 par Philippe Didiergeorges Aka Philess le 05-23-2013, 23:48

- Simuler facilement l’envoi de mail par Blog de Jérémy Jeanson le 05-22-2013, 12:52

- ProcDump 6.0 : support du filtrage sur messages d'exceptions .NET, des filtres multiples et du ciblage par nom de service par CoqBlog le 05-20-2013, 14:50

- Votez pour le TOP 10 des influenceurs SharePoint francophones ! par Le blog de Patrick [MVP SharePoint] le 05-20-2013, 12:59

- [Conf’SharePoint] Dernier rappel ! :-) par Le blog de Patrick [MVP SharePoint] le 05-20-2013, 09:09

- [ #SharePoint 2013 ] les modèles de sites standards… par Le blog de Patrick [MVP SharePoint] le 05-20-2013, 09:03

- 10 erreurs de compréhension concernant SharePoint… par Le blog de Patrick [MVP SharePoint] le 05-20-2013, 08:27

- Conf’SharePoint : 10 bonnes raisons pour ne pas la rater par Le petit blog de Pierre / Pierre's little blog le 05-14-2013, 02:24

- [Event] Soirée de lancement Agile .NET France à Lyon par Blog Agile/ALM de Vincent THAVONEKHAM le 05-13-2013, 01:29

- .NET / Debug : inspection de la mémoire d'applications .NET (dump ou processus live) : première livraison d'une librairie .NET par Microsoft par CoqBlog le 05-11-2013, 22:21