在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]
放在要允许匿名访问的函数的开头。