【发布时间】:2017-03-13 05:44:43
【问题描述】:
我有一些关于 ASP.NET 中的用户和路由的数据。
如何使其在 JavaScript 中可用?
目前,我在_Layout.cshtml 文件中有以下行:
@{ Html.RenderAction("ContextScript", "WebParts"); }
ContextScript 是一个返回以下部分视图的操作:
<script id="context-script">
var context = {
controller: "@Request.RequestContext.RouteData.Values["controller"]",
action: "@Request.RequestContext.RouteData.Values["action"]",
area: "@Request.RequestContext.RouteData.Values["area"]",
culture: "@Request.RequestContext.RouteData.Values["culture"]",
isMobile: @Request.Browser.IsMobileDevice.ToString().ToLower(),
rootUrl: "@BaseMulticultureHttpApplication.RootApplicationUrl",
isAuthenticated: @User.Identity.IsAuthenticated.ToString().ToLower(),
username: "@(User.Identity.IsAuthenticated ? User.Identity.Name : "")",
isBankClient: @(User.Identity.IsAuthenticated ? User.Identity.AcquireUser().BankClientID.HasValue.ToString().ToLower() : "false"),
iin: "@(User.Identity.IsAuthenticated ? User.Identity.AcquireUser().IIN : "")",
fullname: "@(User.Identity.IsAuthenticated ? User.Identity.AcquireUser().FullName : "")"
};
</script>
然后,这个context 正在被许多捆绑脚本读取。
但是,我坚信有更好的选择,因为:
- 用户和路由信息在全局范围内可用,从而污染它并使此
context可用于恶意浏览器插件、XSS 注入脚本(谁知道)等。 - 有关实施的一些信息会向最终用户披露
什么是正确且安全的方法?
【问题讨论】:
-
我不知道这是不是不好的做法。但似乎 Instagram 也是这样做的。 i.imgur.com/WNH4B3h.png
标签: javascript c# asp.net-mvc