web-dev-qa-db-fra.com

Supprimer l'authentification dans l'application de page unique ASP.net MVC

J'essaie de jouer avec le modèle ASP.net MVC SPA dans Visual Studio 2013, je n'ai besoin d'aucun des bits d'authentification, je dois simplement charger directement sur l'une des pages de contrôleurs. 

Comment puis-je me débarrasser de tous les éléments d'authentification du modèle initial? 

14
colobusgem

Supprimez l'annotation [Authorize] de HomeController et supprimez ceci: 

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

à partir de Views\Home\Index.cshtml car l'une des opérations js provoque la redirection vers la page de connexion, même après la suppression de l'annotation [Authorize] de HomeController et vous n'en avez probablement pas besoin. Si vous avez besoin de ces scripts sur votre page, vous devez en éditer un.

23
Castro Roy

Voici ce que j'ai fait.

Supprimez l'attribut [Authorize] du contrôleur d'origine. 

Ensuite, dans app.viewmodel.js, vous verrez ceci:

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

C'est la section qui vous redirigera vers l'écran de connexion, alors commentez ou supprimez le bloc if. Si vous le souhaitez, vous pouvez également aller dans app.datamodel.js et supprimer ou commenter self.getAccessToken.

De plus, dans WebApiConfig.cs, vous voudrez probablement supprimer/commenter les lignes suivantes:

// 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

Voici comment je l'ai résolu. Je viens de retirer le 

Suppression de l'annotation [Autoriser] de HomeController.cs (obtenue de la réponse de Castro Roy). Même après cela, l'application redirigée vers la page de connexion.

Pour résoudre la redirection, supprimez l'annotation [Authorize] de AccountController.cs.

Cependant, j'ai conservé le code associé à l'authentification afin qu'il puisse être utilisé dans d'autres pages.

2
jre

Placez [AllowAnonymous] au début de la fonction pour laquelle vous souhaitez autoriser l'accès anonyme.

1
DaBlue

En plus de supprimer [Authorize] des contrôleurs, le fichier home.viewmodel.js est à l'origine du problème de redirection lors du chargement de la page d'accueil. Dans App_Start/BundleConfig.cs, supprimez la ligne ~/Scripts/app/home.viewmodel.js du bundles/app ScriptBundle.

0
zba