我是angularjs的新手并开始为我的作业实施登录/注销。
我现在正在做的是 -
$rootScope.$on('$stateChangeStart', function (event, toState, toParams,fromState) {
var token = SessionService.get('token')
LoginService.isLoggedIn({token:token}).$promise.then(function(response){
if(!response.error){
var isLoggedInOnServer = response.object
var requireLogin = toState.data.requireLogin
if(!isLoggedInOnServer && requireLogin){
console.log("1....")
event.preventDefault()
$state.go('user.signin');
}
console.log(toState.data.title,['signin','signup','forget'].indexOf(toState.data.title),isLoggedInOnServer,requireLogin)
if(isLoggedInOnServer && !requireLogin && ['signin','signup','forget'].indexOf(toState.data.title) > -1){
console.log("2....")
$state.go('app.dashboard')
}
}else{
console.log("3....")
event.preventDefault();
$state.go('user.signin')
}
})
这个问题是当我点击一个安全的页面时,它首先到达并显示该页面闪烁然后返回登录页面如果我没有登录。
如果我没有登录,则应立即将我重定向到登录页面而不是该安全页面。
像Spring中的Spring-security一样,任何机构都可以告诉我强大的登录机制或者我可以实现的逻辑吗?
答案 0 :(得分:1)
我也正在使用重定向登录..这对我来说很好。
当我登录时,令牌存储在cookie和变量上以呈现我的菜单栏。
如果我的cookie为空,我的渲染也会重定向到index.html(我的登录名)
var miApp = angular.module('Natura', ['ngRoute', 'ngTable', 'ngCookies'])
.run(function ($rootScope, $location, $cookies, $window, loginService) {
$rootScope.render = $cookies.get('render');
$rootScope.$on('$routeChangeStart', function () {
if ($window.location.pathname !== "/NaturaWEB/index.html") {
if ($rootScope.render !== "true") {
$window.location.href = 'index.html#/';
}
}
});
});
使用$window.location.pathname
我可以控制正在尝试访问的网址。