2015-10-15 59 views
0

我正在构建一个Angular应用程序,并且我有用户将看到的主页,我想在页面的右侧显示一个按钮:Login。如果用户还没有登录,我想要这个确切的按钮有一个“帐户设置”和“注销”列表,如果用户已经登录。Angular - 为当前用户存储登录信息

我在我的应用程序中使用路由,所以当用户登陆主页,我不加载任何控制器(还)。我正在根据应用程序配置中的$ state加载控制器来为每个视图加载控制器。

我在哪里存储用户的登录状态,以便更改按钮来说登录或注销?我需要为主页制作一个控制器吗?我迷失在这里,任何帮助将不胜感激。

回答

0

你要使用ng-show/ng-hide和ng-click。所以,你要告诉按钮,如果用户没有登录

这看起来像:

<button ng-hide="isLoggedIn()" ng-click"login()">Login</a></button> 
<button ng-show="isLoggedIn()" ng-click"showSettings()">Account Settings</a></button> 
<button ng-show="isLoggedIn()" ng-click"logout()">Logout</a></button> 

控制器看起来像

$scope.isLoggedIn = Auth.isLoggedIn; // code to check if user is logged in 

当用户登录,他们会得到一个cookie存储。所以你想找出一种方法来检查cookie是否在那里。上面的'Auth'是一个使用函数isLoggedIn检查用户cookie是否存在的工厂。

如果你搜索这个,网上有很多例子。我使用Angular Full Stack(yeoman)进行授权,但是有更简单的方法不包含后端。

+0

嗨,感谢您的回答。所以每次用户刷新页面时,我都需要检查他是否已登录? –

+0

你有常用的导航链接 - 所以如果用户没有登录会有登录,首页链接。然后,一旦登录,您将看到注销,配置文件,设置......它几乎是瞬间发生的,因为在初次加载应用程序时,所有JS代码都会下载一次。这里是一个回购 - 所以你可以看到一个生产样式检出组件/导航和相应的控制器的用例https://github.com/jakblak/MEAN-Projects/tree/master/AuthStarter – venturz909