Javascript AngularJs-限制访问';登录';使用者
我正在为我正在创建的应用程序设置登录系统 我可以设置用户登录或注销时的cookies。我不认为如果用户登录,测试每个视图是一个非常优雅的解决方案,我担心这里和那里的页面可能会出现漏洞(这是一个相当大的应用程序) 我认为最好的方法是以某种方式拦截路由更改,并检查用户是否已登录,否则将其发送到登录/创建用户页面。我已经找到了一些方法,但似乎没有正式的文档记录。有人在现实世界中使用过这种方法吗?它有效吗 我的路由文件如下所示:Javascript AngularJs-限制访问';登录';使用者,javascript,angularjs,routes,Javascript,Angularjs,Routes,我正在为我正在创建的应用程序设置登录系统 我可以设置用户登录或注销时的cookies。我不认为如果用户登录,测试每个视图是一个非常优雅的解决方案,我担心这里和那里的页面可能会出现漏洞(这是一个相当大的应用程序) 我认为最好的方法是以某种方式拦截路由更改,并检查用户是否已登录,否则将其发送到登录/创建用户页面。我已经找到了一些方法,但似乎没有正式的文档记录。有人在现实世界中使用过这种方法吗?它有效吗 我的路由文件如下所示: 'use strict'; app.config(['$routePro
'use strict';
app.config(['$routeProvider', function ($routeProvider) {
$routeProvider
// LOGIN
.when('/User/LoginUser', {templateUrl: 'views/user/login.html',controller: 'loginCtrl'})
....... more routes here.......
// DEFAULT
.otherwise({redirectTo: '/'});
}]);
$routeProvider
// LOGIN
.when('/User/LoginUser', {templateUrl: 'views/user/login.html',controller: 'loginCtrl', isLogin: true})
任何帮助或建议,或指向我将如何做这件事的真实世界实例的点,都将不胜感激 您可以根据建议截取路线更改,并根据以下示例采取相应行动:
$rootScope.$on('$routeChangeStart', function (event, next) {
var userAuthenticated = ...; /* Check if the user is logged in */
if (!userAuthenticated && !next.isLogin) {
/* You can save the user's location to take him back to the same page after he has logged-in */
$rootScope.savedLocation = $location.url();
$location.path('/User/LoginUser');
}
});
另外,将isLogin:true
添加到登录页面的路由定义中,如下所示:
'use strict';
app.config(['$routeProvider', function ($routeProvider) {
$routeProvider
// LOGIN
.when('/User/LoginUser', {templateUrl: 'views/user/login.html',controller: 'loginCtrl'})
....... more routes here.......
// DEFAULT
.otherwise({redirectTo: '/'});
}]);
$routeProvider
// LOGIN
.when('/User/LoginUser', {templateUrl: 'views/user/login.html',controller: 'loginCtrl', isLogin: true})
祝你的项目好运 我的意见:
<?php if (!$_SESSION['user_id'] { forward(/user/access); }) ?>
这是你的angular应用程序…我的第一个想法跳到了“服务器端”和“会话”这里。我在我的应用程序中也使用路由,我使用ajax调用会话数据。我使用它来确定用户角色以及用户登录会话状态。服务器端不是一个选项@Asok我希望有一个更高级别的解决方案,这样我就不必反复询问服务器用户是否登录了。感谢您的帮助!添加“isLogin:true”有什么作用?它没有在最新的angularJS文档中记录
isLogin
不是angular router
API的一部分,它只是我们在$routeChangeStart
侦听器实现中检查的一个变量(请参阅if
语句),这是检查下一个路由的isLogin。什么是用户刷新同一个页面,它不重定向吗?现在是2014年。我们可以做得更好。:-)我相信这是有办法的,但在某些应用程序(例如网上银行)中,即使没有价值或信息,也不能只显示网上银行帐户的可视界面。我会删除这个答案以避免2年前的耻辱,我仍然这样认为,在没有任何问题的情况下做了几个角度的应用之后。我通常会改变主意,在这种情况下,我没有,我仍然相信,在某些情况下,即使是简单的,无用的界面代码,显示也是一种风险。你显然不是在保安部门工作。