在angularjs应用程序中,即使用户未登录,也会显示html页面

在angularjs应用程序中,即使用户未登录,也会显示html页面,html,angularjs,Html,Angularjs,我有一个需要登录的angularJS应用程序。我已经在应用程序中定义了我的状态。如果我没有登录并直接在浏览器中打开状态,它将重定向到404 问题是,当我在浏览器中显式打开.html页面而不登录时,它会显示html元素和未呈现的angularJS表达式。在开发人员工具的“网络”选项卡中,状态代码为200。如何改为404,并将其重定向到404或登录页面 我的应用程序托管在ApacheTomcat上 感谢您的帮助 更新: 下面是一个例子:(但我不能提供代码) 假设我有一个文件夹客户端,其中Client

我有一个需要登录的angularJS应用程序。我已经在应用程序中定义了我的状态。如果我没有登录并直接在浏览器中打开状态,它将重定向到404

问题是,当我在浏览器中显式打开.html页面而不登录时,它会显示html元素和未呈现的angularJS表达式。在开发人员工具的“网络”选项卡中,状态代码为200。如何改为404,并将其重定向到404或登录页面

我的应用程序托管在ApacheTomcat上

感谢您的帮助

更新:

下面是一个例子:(但我不能提供代码)

假设我有一个文件夹客户端,其中ClientView.html作为文件夹中的视图。下面是我的app.js中的路线

.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
中指定这些文件夹或其他内容。