Im使用AngularJs和UI路由器构建应用程序。这是一个管理面板采用这种结构:用于受限管理面板的UI路由器结构
- 没有通过认证
- 验证的
- 管理员控制台
- 客户端面板
对于每个认证的状态,应用程序需要加载不同的内容并访问不同的信息,例如:
- 管理:可以看到一个列表与所有客户,产品等...
- 客户端:只能看到他的产品,门票等......
当用户登录我检查他是管理员还是客户端,然后用lazyload加载他需要的模块。例如,客户端不需要该模块来显示所有客户端的列表。
这是结构我到目前为止:
-index.html -> view:main
--login.html
--error.html
-app.html -> view:app
--restricted.html
--notFound.html
-app_adm -> view:app-adm -> lazyload admModule.js
--home_adm.html
--listClient.html
--listProducts.html
--listFinancial.html
etc...html
-app_cli -> view:app-cli -> lazyload cliModule.js
--home_cli.html
--userData.html
--products.html
--tickets.html
etc...html
的index.html
<div ui-view="main"></div>
app.html
<nav>
[..content here..]
</nav>
<div ui-view="app"></div>
<footer>
[..content here..]
</footer>
app_adm.html
<div ui-view="app-adm"></div>
app_cli.html
<div ui-view="app-cli"></div>
感觉就像使用这些2个额外的app
(ADM和CLI)是不完全正确,但是到现在为止它是唯一我发现载入的文件只在我需要的地方。
有没有更好的方法来改善这种结构?
注:我试图设置状态app-adm
和app-cli
是一个状态,而不templateUrl并使用相同的视图状态app
,但它并没有奏效。
好吧,它有点棘手..但你这样做是非常正确的方式...我想你已经处理了什么客户端“意外”在管理网址类型,并没有通过并重新导向回来? ...除此之外,常见的问题应该放在一个共同的文件夹中,并且应该将它们分别放在相应的文件夹中。 – Minato
按照John Papa风格指南,我可以很好地完成文件夹结构。并通过解析函数来控制访问以检查用户角色。即使尝试并可以以某种方式访问管理视图,http请求也会使用令牌验证来检查用户是客户端还是管理员。唯一令人头疼的是视图结构本身..我在那里会有一个简单的方法来做到这一点..由于Angular总是有一个非常非常简单的方式来做事情.. = D – celsomtrindade