【问题标题】:Determining if current user is superuser with javascript确定当前用户是否是 javascript 的超级用户
【发布时间】:2015-05-30 05:37:42
【问题描述】:

在 Django 中,我可以利用 {% if user.is_superuser %} 等模板标签来确定当前用户是否为超级用户。在 javascript 文件中推荐的方法是什么。

谢谢。

【问题讨论】:

  • 通常您不想在前端做出这些决定,因为用户可以在前端更改大部分内容。每次他们尝试做某事(例如提交表单)时,您都会进行检查,然后再检查他们是否是超级用户,如果不是则返回要显示的错误。你在检查他们是否是超级用户?
  • @KevinF 谢谢你的回复。我有一个页面,我想呈现特定于一般用户的按钮,或特定于管理员用户的按钮。 Django 模板标签将允许我在 html 模板中进行这些检查,即使在 <script> 标签下,也无需将其嵌入到标记中,因为它全部在后端处理。我的问题是我是否可以在 javascript 文件而不是 html 模板中执行此操作或类似操作。因为为了让我的脚本井井有条,我想将 javascript 保存在一个单独的 js 文件中,并在 html 模板中获取它。

标签: javascript html django extjs


【解决方案1】:

永远不要在前端代码中这样做,任何人都可以修改该代码并成为超级用户,您需要在用户登录系统并启动仅针对该特定用户的会话时在后端实现这一点超级用户,没有人可以从前端修改它

【讨论】:

  • 好的,那么你如何使用 Javascript 来实现呢?他的问题很清楚。
【解决方案2】:

如果您只想从后端使用 javascript 中的任何信息。有多种方法可以做到这一点。

定义一个过滤标签

这里 to_json 是 filter_tag 你可以定义你定义标签或过滤器的地方。就我而言,它是'libs/commons/templatetags/common_filters.py'

@register.filter
def to_json(obj):
    return mark_safe(json.dumps(obj))

1- javascript 变量

<script type="text/javascript">
var someData = {% contextvariable|to_json %};
</script>

2- 在头部制作元标记

<meta id="dome_data_id" content="{% context_variable|to_json %}">

比在javascript中访问如下 var some_data = JSON.parse($('#dome_data_id').attr('content'));

3 - 使用数据属性

<html_tag id="some_data_id" data-some_data="{% context_variable|to_json %}"></html_tag>

比在javascript中访问如下

var some_data = JSON.parse($('#some_data_id').data('some_data'));

要检查用户是否是超级用户,您可以使用上述任何一种方法。但是如果该用户提交了某个表单或发送了请求,则必须在后端进行验证,该用户实际上是超级用户而不是其他人。

你可以通过后端的 if 条件很好地做到这一点

if request.user.is_superuser
# blah blah

【讨论】:

    猜你喜欢
    • 2021-04-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-23
    • 2011-01-27
    • 1970-01-01
    • 2022-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多