在angularjs应用程序中,即使用户未登录,也会显示html页面
我有一个需要登录的angularJS应用程序。我已经在应用程序中定义了我的状态。如果我没有登录并直接在浏览器中打开状态,它将重定向到404 问题是,当我在浏览器中显式打开.html页面而不登录时,它会显示html元素和未呈现的angularJS表达式。在开发人员工具的“网络”选项卡中,状态代码为200。如何改为404,并将其重定向到404或登录页面 我的应用程序托管在ApacheTomcat上 感谢您的帮助 更新: 下面是一个例子:(但我不能提供代码) 假设我有一个文件夹客户端,其中ClientView.html作为文件夹中的视图。下面是我的app.js中的路线在angularjs应用程序中,即使用户未登录,也会显示html页面,html,angularjs,Html,Angularjs,我有一个需要登录的angularJS应用程序。我已经在应用程序中定义了我的状态。如果我没有登录并直接在浏览器中打开状态,它将重定向到404 问题是,当我在浏览器中显式打开.html页面而不登录时,它会显示html元素和未呈现的angularJS表达式。在开发人员工具的“网络”选项卡中,状态代码为200。如何改为404,并将其重定向到404或登录页面 我的应用程序托管在ApacheTomcat上 感谢您的帮助 更新: 下面是一个例子:(但我不能提供代码) 假设我有一个文件夹客户端,其中Client
.config(function ($stateProvider, $httpProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise('/');
$stateProvider
.state('app.client', {
// child state of `app`
url: '/client',
views: {
'content@app': {
templateUrl: 'client/ClientView.html',
controller: 'ClientCtrl'
},
data: {
requireLogin: true
}
}
})
}))
如果我在没有登录的情况下访问应用程序as,那么这会将我带到404
但如果我尝试访问,它会显示该页面中的html元素以及未呈现的AngularJs表达式。如何重定向到登录页面或404?在用户登录时设置变量
isAppLog=true
。并检查是否登录或未使用:
$rootScope.$on('$stateChangeStart', function(event, toState , toParams, fromState, fromParams)
{
if(toState.data.requireLogin=== true && !$rootScope.isAppLog ) {
event.preventDefault();
$state.go('login');
}
});
这将检查用户是否登录,如果没有,则重定向到登录页面。在用户登录时设置变量
isAppLog=true
。并检查是否登录或未使用:
$rootScope.$on('$stateChangeStart', function(event, toState , toParams, fromState, fromParams)
{
if(toState.data.requireLogin=== true && !$rootScope.isAppLog ) {
event.preventDefault();
$state.go('login');
}
});
这将检查用户是否登录,如果没有,则重定向到登录页面。所以,这就是我目前处理它的方式。若登录成功,我已创建sessionStorage变量并将其设置为true。在我的应用程序的每个HTML页面中,我都添加了一个简短的脚本,检查上面的标志。若并没有设置,那个么我重定向到404页面
这显然不是正确的做法,而且存在冗余。如果其他人有更好的方法,请告诉我 所以,我现在就是这样处理的。若登录成功,我已创建sessionStorage变量并将其设置为true。在我的应用程序的每个HTML页面中,我都添加了一个简短的脚本,检查上面的标志。若并没有设置,那个么我重定向到404页面
这显然不是正确的做法,而且存在冗余。如果其他人有更好的方法,请告诉我 提供一些代码。因此我们可以提供帮助。在各自的控制器上设置条件并检查会话。。如果无效,则重定向到404视图。这是我对这个问题可能有更好的处理方法approach@Sai我已经更新了问题。不过我不能提供代码。@SuryaPrakashTumma我已经更新了问题并提供了一个示例。我确实试过了,这适用于各州,而不是在浏览器中提供显式html URL时。@pix1289看起来您尚未在服务器中验证所有html资源。请提供一些代码。因此我们可以提供帮助。在各自的控制器上设置条件并检查会话。。如果无效,则重定向到404视图。这是我对这个问题可能有更好的处理方法approach@Sai我已经更新了问题。不过我不能提供代码。@SuryaPrakashTumma我已经更新了问题并提供了一个示例。我确实试过了,这适用于各州,而不是当您在浏览器中提供显式html URL时。@pix1289看起来您还没有在服务器中验证所有html资源。我会试试这个。谢谢。这将适用于我知道定义的路由,但它们适用于像这样的URL吗?我的意思是在AngularJS应用程序中,我们将使用app.js中预定义的路由从一个状态切换到另一个状态。代码中的方式:$state.go('login')。您已经将其定义为路由、要加载的模板以及它将使用的控制器。不过我想说的是:不要将路由作为/login放在浏览器中;尝试放置/login/LoginView.html。(假设login是一个文件夹,LoginView.html是同一文件夹中的模板)我们在angularjs中使用预定义的路由。您可以在
templateUrl
中指定这些文件夹或其他内容。我将尝试此操作。谢谢。这将适用于我知道定义的路由,但它们适用于像这样的URL吗?我的意思是在AngularJS应用程序中,我们将使用app.js中预定义的路由从一个状态切换到另一个状态。代码中的方式:$state.go('login')。您已经将其定义为路由、要加载的模板以及它将使用的控制器。不过我想说的是:不要将路由作为/login放在浏览器中;尝试放置/login/LoginView.html。(假设login是一个文件夹,LoginView.html是同一文件夹中的模板)我们在angularjs中使用预定义的路由。您可以在模板URL
中指定这些文件夹或其他内容。