2009-11-26 3 views
1

J'ai une application Web personnalisée qui s'intègre à une solution SharePoint (MOSS 2007). Je souhaite ajouter un accès basé sur un rôle aux pages de cette application Web personnalisée, avec uniquement les utilisateurs d'un groupe SharePoint spécifié ou d'un rôle spécifique pouvant y accéder. Les autres utilisateurs étant envoyés à la page Web OOTB par défaut, le message "Vous n'êtes pas autorisé à afficher cette page" s'affiche.Empêcher l'accès aux pages d'applications Web personnalisées par des utilisateurs non administrateurs dans SharePoint

Quelqu'un peut-il me diriger vers des tutoriels sur la façon de mettre en œuvre cela, et comment contrôler l'accès sur chaque page personnalisée?

Veuillez noter que ces pages font partie de l'application Web personnalisée et qu'elles sont et non créées via l'API ou l'interface SharePoint.

Merci, MagicAndi.

Mise à jour

Juste pour vous informer, j'espère une solution où l'on peut utiliser la fonctionnalité SharePoint pour étendre les autorisations parage sécurité ou un élément pour limiter l'accès aux pages d'applications Web personnalisées. J'ai déjà du code pour vérifier le SPGroup d'un utilisateur lors du chargement de la page, et pour rediriger si nécessaire. Merci.

Répondre

3

J'ai un cadre similaire sur mon projet actuel, je l'ai changé un peu plus logique à votre question, nous utilisons une classe de base pour les pages Web personnalisées, quelque chose comme:

 
public abstract class WebPageBase : Page 
{ 
    public SPBasePermissions PagePermissionFlag; 
    public override void OnInit(EventArgs e) 
    { 
     SPWeb web = SPContext.Current.Web; 
     if(!web.DoesUserHavePermissions(PagePermissionFlag)) 
     { 
      // build the access denied page 
      SPUtility.Redirect(SPUtility.AccessDeniedPage + "?Source=" + SPHttpUtility.UrlKeyValueEncode(web.Site.MakeFullUrl(Request.RawUrl)), 
           SPRedirectFlags.RelativeToLayoutsPage, 
           HttpContext.Current); 
     }
} }

ensuite sur la page elle-même, l'autorisation est définie:

public class ContentPage : WebPageBase 
{ 
    protected void Page_PreInit(Object sender, EventArgs e) 
    { 
     PagePermissionFlag = SPBasePermissions.ViewFormPages; 
    } 
} 

Remarque: vous pouvez également définir que sur:

<%@Page PagePermissionFlagString="SPBasePermissions.ViewFormPages"%> *
* vous devrez convertir la chaîne à l'ENUM dans le WebPageBase)

Juste pour référence, ce bit supplémentaire est sans rapport avec la mise en œuvre ci-dessus, la façon dont nous utilisons en interne:

public static class CurrentUser 
{ 
    public static bool IsAdmin 
    { 
     get 
     { 
      return SPContext.Current.Web.DoesUserHavePermissions(SPBasePermissions.ManageWeb); 
     } 
    } 

    public static bool IsReader 
    { 
     get 
     { 
      return SPContext.Current.Web.DoesUserHavePermissions(SPBasePermissions.ViewFormPages); 
     } 
    } 
}
+0

pour clarifier, le SPWeb dans le contexte sera celui auquel vous accédez à votre page personnalisée, la manière recommandée est d'utiliser le dossier _layouts pour y parvenir, donc le contexte sera celui sous http: // portal/site/_layouts /customapp/custompage.aspx. Si vous utilisez le dossier inetpub ou tout autre mappage pour accéder à vos pages, vous devrez peut-être ouvrir le site Web en fonction de la demande. –

+0

F. Aquino, merci beaucoup pour votre réponse. Un digne gagnant de la prime! – MagicAndi

1

Vous devrez implémenter la sécurité ItemLevel aux pages. Accédez à la bibliothèque de pages et sélectionnez la propriété Pages et dites autorisations d'élément, déconnectez l'autorisation et ajoutez uniquement les utilisateurs auxquels vous souhaitez donner accès. Dans le cas où vous souhaitez ajouter ceci à plusieurs fichiers, vous pouvez les regrouper dans des dossiers séparés et appliquer la permission à ces dossiers seuls.

Et lorsque certains essaient de voir la page qu'il n'est pas censé voir, SharePoint envoie automatiquement la page Accès refusé.

Si vous appliquez l'autorisation au niveau de l'élément sur la page, SharePOint applique automatiquement les paramètres de sécurité afin que seules les pages auxquelles il a accès puissent être vues et non les autres.

+0

Kusek, merci pour avoir pris le temps de répondre. +1 – MagicAndi

+0

Kusek, Malheureusement, mes pages d'applications Web personnalisées ne sont pas visibles dans la bibliothèque de documents Pages, donc cette méthode ne répond pas à ma question. – MagicAndi

0

Jetez un coup d'œil au service Web Utilisateurs et groupes exposé par Sharepoint. Votre application Web personnalisée peut appeler ses méthodes pour obtenir des informations sur le profil utilisateur actuel.

Par exemple, la méthode UserGroup.GetUserInfo() renvoie l'indicateur IsSiteAdmin qui peut répondre à votre question.

http://msdn.microsoft.com/en-us/library/ms774637.aspx

Questions connexes