Verhindern Sie Zugriff auf benutzerdefinierte Web Application Seiten von Nicht-Admin-Benutzer in Sharepoint

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

Frage

Ich habe eine benutzerdefinierte Web-Anwendung, die mit einer Sharepoint (MOSS 2007) Lösung integriert. Ich mag rollenbasierten Zugriff auf Seiten in dieser kundenspezifischen Web-Anwendung, mit nur Benutzern in einer bestimmten Sharepoint-Gruppe oder mit einer bestimmten Rolle sie zugreifen zu können hinzuzufügen. Andere Benutzer auf die Standard OOTB Webseite gesendet werden, so dass die Meldung „Sie sind nicht berechtigt diese Seite zu sehen“.

Kann mir jemand auf Tutorials zeigen, wie dies zu implementieren, und wie der Zugriff auf jede benutzerdefinierte Seite zu kontrollieren?

Bitte beachten Sie, dass diese Seiten Teil der benutzerdefinierten Web-Anwendung sind, und sind nicht über den Sharepoint-API oder eine Schnittstelle erstellt.

Danke, MagicAndi.

Aktualisieren

Just machen Sie sich bewusst, ich bin die Hoffnung auf eine Lösung, wo wir von der Sharepoint-Funktionalität machen erweitern Sicherheitsberechtigungen Trimm- oder Artikel Zugriff auf die eigenen Web-Anwendungsseiten zu begrenzen. Ich habe bereits Code einen Benutzer SPGroup beim Laden der Seite zu überprüfen und umzuleiten, falls erforderlich. Danke.

War es hilfreich?

Lösung

Ich habe eine ähnliche Einstellung auf meinem aktuellen Projekt, ich habe es ein wenig verändert, um mehr Sinn zu Ihrer Frage zu stellen, verwenden wir eine Basisklasse für benutzerdefinierte Web-Seiten, so etwas wie:

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);
        }
} }

Dann auf der Seite selbst wird die Erlaubnis definiert:

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

Hinweis: Sie können auch, dass am Set:

<%@Page PagePermissionFlagString="SPBasePermissions.ViewFormPages"%> *
* Sie erhalten die Zeichenfolge an den ENUM im WebPageBase)

konvertieren

Nur als Referenz, dieses zusätzliche Bit ist vor der Umsetzung in keinem Zusammenhang, seine, wie wir sie verwenden intern:

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);
        }
    }
}

Andere Tipps

Sie müssen die Itemlevel Sicherheit auf den Seiten implementieren. Gehen Sie auf die Seiten-Bibliothek und wählen Sie die Seiten Immobilien und Elementberechtigungen sagen, brechen die Erlaubnis darin und fügen Sie nur die Benutzer, die Sie den Zugriff auf geben wollen. Falls Sie möchten, wenn Sie diese, um mehrere Dateien hinzufügen, können Sie gruppieren sie in einen separaten Ordner und wenden Sie die Erlaubnis diese Ordner allein.

Und wenn einige versuchen, die Seite, um zu sehen, dass er nicht sehen soll, Sharepoint sendet hime automatisch den Zugriff verweigert Seite.

Wenn Sie Positionsebene die Berechtigung auf der Seite anwenden, Sharepoint gilt automatisch die Sicherheit Posamenten so dass nur die Seiten, auf die er Zugriff hat, wurde nicht anderen gesehen werden.

Schauen Sie sich auf Benutzer und Gruppen Web Service von Sharepoint ausgesetzt. Ihre eigene Web-App kann seine Methoden aufrufen, Informationen über aktuelle Benutzerprofil zu erhalten.

Zum Beispiel die UserGroup.GetUserInfo () Methode gibt IsSiteAdmin Flagge, die Ihre Frage beantworten kann.

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top