Empêcher l'accès à des pages d'application Web personnalisées par des utilisateurs non administrateurs dans SharePoint

StackOverflow https://stackoverflow.com/questions/1804163

Question

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

Quelqu'un peut-il m'indiquer des tutoriels sur la manière de mettre en œuvre ceci et sur le contrôle de l'accès sur chaque page personnalisée?

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

Merci, MagicAndi.

Mettre à jour

Juste pour vous informer, j'espère une solution grâce à laquelle nous pourrons utiliser la fonctionnalité SharePoint pour étendre les restrictions de sécurité ou les autorisations d'éléments afin de limiter l'accès aux pages d'applications Web personnalisées. J'ai déjà du code pour vérifier le groupe SPG d'un utilisateur au chargement de la page et pour le rediriger si nécessaire. Merci.

Était-ce utile?

La solution

J'ai un paramètre similaire sur mon projet actuel, je l'ai un peu modifié pour donner plus de sens à votre question. Nous utilisons une classe de base pour les pages Web personnalisées, comme par exemple:

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 cela sur le:

<%@Page PagePermissionFlagString="SPBasePermissions.ViewFormPages"%> *
* vous devrez convertir la chaîne en enum dans la WebPageBase)

Juste pour référence, ce bit supplémentaire n'a aucun rapport avec l'implémentation ci-dessus, c'est comment nous l'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);
        }
    }
}

Autres conseils

Vous devrez implémenter la sécurité ItemLevel sur les pages. Accédez à la bibliothèque de pages, sélectionnez la propriété Pages et les autorisations d'élément, divisez l'autorisation et ajoutez uniquement les utilisateurs auxquels vous souhaitez donner l'accès. Si vous souhaitez l'ajouter à plusieurs fichiers, vous pouvez les regrouper dans un dossier séparé et appliquer l'autorisation uniquement à ces dossiers.

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

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

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 un indicateur IsSiteAdmin qui peut répondre à votre question.

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top