【问题标题】:How to render pages those are related to user roles in angular如何以角度呈现与用户角色相关的页面
【发布时间】:2014-05-04 05:50:51
【问题描述】:

首先,我是 Angular JS 的新手。我在一个项目中工作,我有三种类型的用户,所有三种用户都有不同的视图。现在我的问题是,登录后是否可以只呈现属于登录用户的页面/视图而不是所有页面?如果是那怎么办?

【问题讨论】:

  • 不清楚你在问什么。您是在谈论仅在页面上显示某些视图吗?这可以通过ng-showng-visible 来实现。您需要以某种方式让 javascript 知道您的角色,并且您可以创建自己的指令,例如,如果用户不在某个角色中,则删除元素...
  • @JasonGoemaat:首先感谢您的回复。我有三个用户:管理员、投资者、创始人。这三个都有不同的视图。是否可以加载属于登录用户的页面/视图?
  • 您可能希望编写一个角度服务来处理您的项目的身份验证和授权。这可以通过多种方式完成,您可以在此处找到示例实现:github.com/fnakstad/angular-client-side-auth
  • 我会在服务器端做类似的事情,可能会将它们重定向到一个完全不同的 url(即/admin/investor/founder。即使你必须返回不同的 html相同的 url,我会在服务器端执行此操作。我无法想象您正在尝试做什么,或者为什么您只希望视图有所不同。

标签: angularjs django-rest-framework


【解决方案1】:

我会在服务器端进行。像这样的东西。这将根据设置的用户标志类型注入正确的角度应用程序。当然,这意味着您在每个用户上都有一个标志,表明他们是什么类型的用户。您可以只使用用户类型的唯一属性,它的工作方式相同。这将为每种不同类型的用户提供独特的视图和控制器。我假设您希望一个 url 根据用户的身份提供三种不同类型的 Angular 应用程序。如果你想控制哪些 URL 是可访问的,那完全是另外一回事,应该在你的 django 视图中处理。

{% if user.is_staff %}
    <div ng-app='staffApp'>
{% elif user.is_investor %}
    <div ng-app='investorApp'>
{% elif user.is_founder %}
    <div ng-app="founder">
{% endif %}
    <div ng-view>
    </div>
</div>

另一种方法是拥有每个用户都喜欢的属性

@property
def ng-app(self):
    return 'investorApp'

然后在你的模板中做

<div ng-app='{{ user.ng-app }}'>
     <div ng-view>
     </div>
</div>

但无论如何,我认为这将是解决您的问题的正确方法:)

【讨论】:

  • 感谢您的回答,但我正在运行完全独立的角度前端应用程序。没有 django 模板。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-31
  • 1970-01-01
  • 2020-12-28
  • 1970-01-01
  • 2019-05-15
相关资源
最近更新 更多