所以我正在尝试创建一个公共/外部链接,可以生成并分享给任何人,以便人们进入我的angularJS应用程序的特定状态。
我使用$ stateProvider来管理应用程序上的状态。但我需要应用程序的一部分向公众开放。即一个向公众开放的特定国家,一旦他们击中了网址,例如mydoamin / post,它就会让他们独自进入该州。例如
.state("post", {
url: "/post",
controller: "postController",
templateUrl: "templates/post.html",
})
我的应用程序当前用户$ stateChangeStart检查状态转换,但设置为阻止任何未经身份验证的用户。因此,如果任何未登录的人试图进入状态,则会将其踢回登录状态,这是默认的'/'。
.state("login", {
url: "/",
controller: "LoginController",
templateUrl: "templates/login.html",
})
我知道我可以给每个州一个可能'已验证'的值,并为每个州设置为true或false,并检查$ stateChangeStart上的toState,如果'authenticated'为false并基于此授予访问但我需要知道它是一个好主意以及如何安全地实现它。
你会怎么做?提前感谢任何回复/建议。
答案 0 :(得分:0)
为了“保护”用户界面,即隐藏未经授权用户的某些页面,请使用ui-state路由器的resolve
参数。有关详细信息,请参阅this问题。对需要身份验证的状态进行“解析”,并将其留给公共页面。
然而,重要的是要了解在客户端实现的任何安全措施永远不会完全安全。任何人都可以访问任何页面,包括需要身份验证的页面。他们所需要的只是打开开发工具并改变JavaScript。这就是为什么你应该处理API级别的授权。这样,即使恶意用户可以看到隐藏页面(即他可以浏览并查看html),他也无法看到从API获取的任何数据。