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?
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.
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));
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.
Placez [AllowAnonymous]
au début de la fonction pour laquelle vous souhaitez autoriser l'accès anonyme.
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.