webentwicklung-frage-antwort-db.com.de

Entfernen Sie die Authentifizierung in der ASP.net MVC-Einzelseitenanwendung

Ich versuche, mit der asp.net MVC SPA-Vorlage in Visual Studio 2013 herumzuspielen, ich benötige keine Authentifizierungsbits, ich muss nur direkt auf eine der Controller-Seiten laden. 

Wie entferne ich alle Authentifizierungsmaterialien von der ursprünglichen Vorlage? 

14
colobusgem

Entfernen Sie die [Authorize]-Anmerkung von HomeController und entfernen Sie diese: 

@section Scripts{
   @Scripts.Render("~/bundles/knockout")
   @Scripts.Render("~/bundles/app")
}

von Views\Home\Index.cshtml, weil einer von js die Weiterleitung zur Anmeldeseite verursacht, selbst nachdem die [Authorize]-Annotation aus HomeController entfernt wurde. Wenn Sie diese Skripts auf Ihrer Seite benötigen, müssen Sie eines davon bearbeiten.

23
Castro Roy

Hier ist was ich getan habe.

Entfernen Sie das [Authorize]-Attribut vom Home-Controller. 

Dann sehen Sie in app.viewmodel.js folgendes:

self[options.bindingMemberName] = ko.computed(function () {
    if (!dataModel.getAccessToken()) {
        // The following code looks for a fragment in the URL to get the access token which will be
        // used to call the protected Web API resource
        var fragment = common.getFragment();

        if (fragment.access_token) {
            // returning with access token, restore old hash, or at least hide token
            window.location.hash = fragment.state || '';
            dataModel.setAccessToken(fragment.access_token);
        } else {
            // no token - so bounce to Authorize endpoint in AccountController to sign in or register
            window.location = "/Account/Authorize?client_id=web&response_type=token&state=" + encodeURIComponent(window.location.hash);
        }
    }

    return self.Views[options.name];
});

In diesem Bereich werden Sie zum Anmeldebildschirm weitergeleitet. Kommentieren Sie den Block if oder entfernen Sie ihn. Wenn Sie möchten, können Sie auch in app.datamodel.js gehen und self.getAccessToken entfernen oder auskommentieren.

Außerdem möchten Sie in WebApiConfig.cs wahrscheinlich die folgenden Zeilen entfernen/auskommentieren:

// Web API configuration and services
// Configure Web API to use only bearer token authentication.
config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
9
Matt Burland

So habe ich es gelöst. Ich habe gerade das entfernt 

Die [Authorize] -Anmerkung von HomeController.cs wurde entfernt (die Antwort stammt von Castro Roy). Auch danach hat die App zur Login-Seite weitergeleitet.

Um die Umleitung aufzulösen, entfernen Sie die Annotation [Authorize] aus der Datei AccountController.cs

Ich habe jedoch den Authentifizierungscode beibehalten, damit er auf anderen Seiten verwendet werden kann.

2
jre

Setzen Sie [AllowAnonymous] am Anfang der Funktion, auf die Sie den anonymen Zugriff erlauben möchten.

1
DaBlue

Zusätzlich zum Entfernen von [Authorize] von den Controllern verursacht die Datei home.viewmodel.js das Problem der Weiterleitung beim Laden der Homepage. Entfernen Sie in App_Start/BundleConfig.cs die Zeile ~/Scripts/app/home.viewmodel.js aus dem bundles/app ScriptBundle.

0
zba