/和/#/有什么区别?

时间:2015-08-22 23:37:41

标签: javascript angularjs authentication angular-routing

我正在开展一个小项目以学习AngularJS。这个项目有两页" /"和" / login"。因此,在未经过身份验证时,它会重定向到" / login"如果通过了" /"。身份验证过程由NodeJS服务器处理,并且可以正常运行。我在控制器中实现了一个简单的身份验证。

if ((typeof $scope.token === "undefined") || ($scope.token == null))
    $location.path("/login");
else
    $location.path("/");

这段代码,当我未经过身份验证并访问" /"将我重定向到" / login",但是当我访问" /#/"它显示" /"的内容即使我没有通过身份验证。

所以我想知道" /"之间是否存在差异和" /#/",为什么会这样?

1 个答案:

答案 0 :(得分:2)

具有#<anything>的URL是浏览器本地的,哈希及其之后的任何内容永远不会在请求时发送到服务器,也不会在添加或更改哈希时重新加载页面。它对于可以直接在URL中共享的客户端触发器很有用。

在本地,您可以使用location.hash访问它的值(但在您的情况下,它只是"/"

不同之处在于,一个是没有哈希值的/网址,/#/是您的网址,其哈希值为"/"