【问题标题】:How can I show or hide some buttons depend on the user's rights, in angularjs?在angularjs中,如何根据用户的权限显示或隐藏一些按钮?
【发布时间】:2012-06-22 16:31:00
【问题描述】:

使用 angularjs,我们通常使用纯 HTML 来编写视图。现在我有一个问题:如何根据用户的权限显示或隐藏某些按钮?

例如,当前页面正在显示一篇文章。如果当前用户是作者或文章或管理员,则显示“删除”按钮。

但是由于视图是纯 HTML,我该如何控制它呢?

我可以发布一个请求,将一些数据(例如当前用户id,文章id)传递给服务器进行检查,但是如果按钮很多,我需要多次请求,这没有效果。

有没有更好的方法来做到这一点?

【问题讨论】:

    标签: angularjs


    【解决方案1】:

    您可以使用ngShow directive。我把a little demo放在一起,但重要的一点很简单:

    <button ng-show="user.id==post.postedby">Delete</button>
    

    【讨论】:

    • @Freewind :我以为您正在寻找检查用户权限的最优雅的解决方案!如,如果用户登录,此信息将在服务器中(而不是在客户端!),所以我实际上是在寻找最优雅的解决方案。有没有一种解决方案可以避免每次都在服务器上检查这个?
    • @ganaraj,不确定我是否理解问题所在。有关身份验证和授权的信息也可以存在于客户端。服务器当然有最终决定权(当用户请求删除时,服务器会验证权限),但客户端仍然可以知道当前用户是谁以及他们拥有哪些权限,以便在 UI 中反映这一点。
    • 是的,如果客户端可以操作就可以了(例如,在这个例子中,客户端用户可以轻松地检查元素并显示其中一个隐藏的按钮)。但重要的是,即使这个作弊客户端可以在他自己的浏览器上编辑数据,服务器也会拒绝他(如果验证正确)。所以这将是无用的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多