【发布时间】:2017-02-05 10:17:55
【问题描述】:
我尝试创建一个登录系统,但我希望会话可以从 PHP 代码中获取。如果会话登录是false 或null,它将重定向到登录页面。
这是我运行的 AngularJS 代码:
app.run(["$rootScope", 'adminService', '$location', function($rootScope, adminService, $location) {
$rootScope.$on("$routeChangeStart", function() {
$location.path('/login');
});
}]);
路由代码:
app.config(function($routeProvider){
$routeProvider.when('/', {
templateUrl: 'welcome.html'
}).when('/administrator', {
templateUrl: './part/administrator.html',
controller: 'adminPageControl'
}).when('/administrator/:id_admin', {
templateUrl: './part/addit-administrator.html',
}).when('/alternatif', {
templateUrl: './part/alternatif.html',
controller: 'alternatifPageControl'
}).when('/alternatif/:id_alternatif', {
templateUrl: './part/addit-alternatif.html'
}).when('/skala', {
templateUrl: './part/skala.html',
controller: 'skalaPageControl'
}).when('/skala/:id_skala', {
templateUrl: './part/addit-skala.html'
}).when('/kriteria', {
templateUrl: './part/kriteria.html',
controller: 'kriteriaPageControl'
}).when('/kriteria/:id_kriteria', {
templateUrl: './part/addit-kriteria.html'
}).when('/klasifikasi', {
templateUrl: './part/klasifikasi.html',
controller: 'klasifikasiPageControl'
}).when('/klasifikasi/:id_klasifikasi', {
templateUrl: './part/addit-klasifikasi.html'
}).when('/analisis', {
templateUrl: './part/topsis.php',
controller: 'analisisPageControl'
}).when('/login', {
templateUrl: './login.html'
}).when('/logout', {
template: 'logout'
}).otherwise({
redirectTo: '/'
});
});
PHP函数会话代码:
function logincheck(){
return $_SESSION['authid'];
}
logincheck();
【问题讨论】:
-
您应该在后端创建一个唯一的会话令牌,而不会将 PHP-Session 状态直接解析到您的客户端。请记住,AngularJS 是为 SPA 设计的。因此,让您的客户端使用 API 与后端通信。例如 RESTful API。用户通过客户端登录后,将唯一的会话令牌返回给客户端。在任何受保护的数据 HTTP 请求上放置并验证此令牌。看一下 oAuth 处理,也是一样的。
-
如何制作令牌?
-
例如
$token = md5('what-ever-you-want'); -
我明白了,谢谢林。
标签: javascript php angularjs