在ASP.net MVC单页面应用程序中删除身份validation

我试图在visual studio 2013中使用asp.net MVC SPA模板,我不需要任何身份validation位,我只需要直接加载到其中一个控制器页面上。

如何从初始模板中删除所有身份validation内容?

HomeController删除[Authorize]注释并删除它:

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

来自Views\Home\Index.cshtml因为其中一个js导致重定向到登录页面,即使从HomeController删除[Authorize]注释后可能你不需要它。 如果您在页面中需要这些脚本,则需要编辑其中一个脚本。

这就是我做的。

从家庭控制器中删除[Authorize]属性。

然后在app.viewmodel.js你会看到:

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

这是将您重定向到登录屏幕的部分,因此注释掉或删除if块。 如果你想要,你也可以进入app.datamodel.js并删除或注释掉self.getAccessToken

此外,在WebApiConfig.cs您可能希望删除/注释掉以下行:

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

这是我解决它的方式。 我刚刚删除了

从HomeController.cs中删除了[Authorize]注释(从Castro Roy的回答中得到了这个)。 即使在此之后,应用程序也会重定向到登录页面。

要解决重定向,请从AccountController.cs中删除[Authorize]注释

但是,我保留了与身份validation相关的代码,以便可以在其他页面中使用。

除了从控制器中删除[Authorize] ,home.viewmodel.js文件还会导致主页加载时出现重定向问题。 在App_Start/BundleConfig.cs ,从bundles/app ScriptBundle中删除~/Scripts/app/home.viewmodel.js行。

[AllowAnonymous]放在要允许匿名访问的函数的开头。