所以这是我的问题。Angular JS +用户认证+页面刷新
我可以使用auth工厂成功地从我的angularJS应用程序登录,我通过它与我的pp rest API进行通信。 可以说Auth.login(用户) - >(POST)myapi.com/user/login:响应是Auth在本地保存的用户对象。因此Auth.getCurrentUser()返回本地用户对象。
我的其他API,我也有一个myapi.com/user/get_loggedin_user它返回当前登录的用户(使用PHP会话)。因此,如果Auth.getCurrentUser应该实际检查本地用户是否存在,如果不是,请对myapi.com/user/get_loggedin_user执行ajax并检查是否在使用null响应之前登录。这里的一个问题是,ajax很烦人,你需要放入一个成功的回调函数,并让所有代码在成功回调中执行。
现在让我们在Angular App(网站),mydomain.com/user/dashboard(已经登录)上说im,然后我刷新我的浏览器。现在,当页面重新加载时,angular不知道我当前的用户,所以在它将它重定向到mydomain/login之前,我希望它检查用户是否已登录。我可以明显在控制器中进行一次1次调用,但有没有更简单的方法,我可以在控制器中注册一些访问限制(例如:logged_in == true),并且当您访问任何具有登录需求的页面时,它会检查本地用户(如果用户不存在,则获取用户) ,如果为空则重定向到登录页面,或者一旦匹配需求就显示页面?
不同的常见页面要求:null,logged_in,admin,function:haveAccess(user,object)。
注意:在使用stateProvider
IM
这是伟大的(测试和工作很好)。但是我有2个问题。 1.需要身份验证层(用户必须登录)的每个状态/子状态,我需要复制粘贴这个重新编码的代码块(它很简单,但似乎有点重复,必须是更好的方法?) 。但这很好,它的工作原理,并没有什么大不了的,如果我需要复制粘贴几行代码。 2.有没有办法在全球各地都有这种触发器?这是因为我可以触发MyAuth.getInfo()或MyAPI.getInfo()来获取应用程序的初始信息(主要是第一次用户进入刷新页面)。 – decay 2014-09-24 06:38:03
如果你想加载控制器(及其安全先决条件)的方式,你应该阅读这个有用的[post](http://weblogs.asp.net/dwahlin/dynamically-loading-controllers-and-views- with-angularjs-and-requirejs),特别是在routeResolver.js文件的结尾部分。 – 2014-09-24 07:37:35
@decay,我回答你的问题吗? – 2014-09-25 16:04:59