Asp.net mvc 应用程序在用户登录前抛出 js 语法错误
Posted
技术标签:
【中文标题】Asp.net mvc 应用程序在用户登录前抛出 js 语法错误【英文标题】:Asp.net mvc application throwing js syntax errors before users are logged in 【发布时间】:2013-10-21 20:09:13 【问题描述】:在检查浏览器控制台时,为什么我的应用程序在登录页面向我抛出一些 javascript 错误?
我已将 web.config 设置为包含以下内容:
<authentication mode="Forms">
<forms loginUrl="~/Login" timeout="90" />
</authentication>
然后我有一个_AnonymousUserLayout.cshtml
,其中包含以下脚本:
<!-- Bootstrap JS -->
<script src="@Url.Content("~/Scripts/jquery-1.8.2.js")"></script>
<script src="@Url.Content("~/Scripts/bootstrap.js")"></script>
<!-- Supersized JS -->
<script src="@Url.Content("~/Scripts/supersized.core.3.2.1.js")"></script>
在我的Login.cshtml
(通过布局文件中的 RenderBody() 渲染)我包括以下内容:
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>
在我的Global.asax.cs
中,我定义了这个过滤器:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
filters.Add(new System.Web.Mvc.AuthorizeAttribute());
最后,我被重定向到_ViewStart.cshtml
中的登录页面:
@
if (Request.IsAuthenticated)
Layout = "~/Views/Shared/_Layout.cshtml";
else
Layout = "~/Views/Shared/_AnonymousUserLayout.cshtml";
每当我没有登录并重定向到登录页面时,我都会在开发者控制台中看到以下错误:
Uncaught SyntaxError: Unexpected token < :54837/Login?ReturnUrl=%2FScripts%2Fkendo%2F2013.1.319%2Fjquery.min.js:1
Uncaught SyntaxError: Unexpected token < :54837/Login?ReturnUrl=%2FScripts%2Fkendo%2F2013.1.319%2Fkendo.all.min.js:1
Uncaught SyntaxError: Unexpected token < Login?ReturnUrl=%2FScripts%2Fkendo%2F2013.1.319%2Fkendo.aspnetmvc.min.js:1
我做错了什么?
【问题讨论】:
【参考方案1】:根据我的 ASP.Net 经验(不是 MVC):如果启用了表单身份验证,您必须绕过登录页面中使用的所有脚本和图像的身份验证。这是通过使用 web.config 的 location 元素来完成的,如下例所示:
<location path="<your path>jquery-1.8.2.js">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
【讨论】:
【参考方案2】:经过一些研发后,我也面临同样的问题,我发现我需要在 web config 中提供以下代码:
<location path="Scripts/jquery-3.4.1.js">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
【讨论】:
以上是关于Asp.net mvc 应用程序在用户登录前抛出 js 语法错误的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET MVC2 Membership:如何获取登录用户的 userID 和 roleID?
在 ASP.Net MVC 应用程序中从 Facebook SDK for .Net 获取 Facebook 用户访问令牌