当前位置: 首页 > 知识库问答 >
问题:

如何防止浏览器身份验证对话框angularjs

戈巴英
2023-03-14

在本教程之后,我解决了这个问题。

var app = angular.module('app', ['ngRoute']);

app.factory('CsrfTokenInterceptorService', ['$q',
function CsrfTokenInterceptorService($q) {

    // Private constants.
    var CSRF_TOKEN_HEADER = 'X-CSRF-TOKEN',
        HTTP_TYPES_TO_ADD_TOKEN = ['DELETE', 'POST', 'PUT'];

    // Private properties.
    var token;

    // Public interface.
    var service = {
        response: onSuccess,
        responseError: onFailure,
        request: onRequest,
    };

    return service;

    // Private functions.
    function onFailure(response) {
        if (response.status === 403) {
            console.log('Request forbidden. Ensure CSRF token is sent for non-idempotent requests.');
        }

        return $q.reject(response);
    }

    function onRequest(config) {
        if (HTTP_TYPES_TO_ADD_TOKEN.indexOf(config.method.toUpperCase()) !== -1) {
            config.headers[CSRF_TOKEN_HEADER] = token;
        }

        return config;
    }

    function onSuccess(response) {
        var newToken = response.headers(CSRF_TOKEN_HEADER);

        if (newToken) {
            token = newToken;
        }

        return response;
    }
}]);

  app.config(function($routeProvider,$httpProvider) {
        $routeProvider

            // route for the home page
            .when('/', {
                templateUrl : 'pages/home.html',
                controller  : 'mainController'
            })
            .when('/home', {
                templateUrl : 'pages/home.html',
                controller  : 'mainController'
                            })
            .when('/about', {
                templateUrl : 'pages/about.html',
                controller  : 'aboutController'
            })

            // route for the login page
            .when('/login', {
                templateUrl : 'pages/login.html',
                controller  : 'mainController'
            })
            .when('/helpRequest', {
                templateUrl : 'pages/helpRequest.html',
                controller  : 'helpRequestController'
            })
            .when('/queryHelpRequest', {
                templateUrl : 'pages/helpQueryPage.html',
                controller  : 'helpQueryController'
            });
            $httpProvider.defaults.xsrfHeaderName = 'X-CSRF-TOKEN';
            $httpProvider.interceptors.push('CsrfTokenInterceptorService');
    });


   app.controller('mainController', function($rootScope, $scope, $http, $location) {


  var authenticate = function(credentials, callback) {

    var headers = credentials ? {authorization : "Basic "
        + btoa(credentials.username + ":" + credentials.password)
    } : {};

    $http.get('user', {headers : headers}).success(function(data) {
      if (data.name) {
        $rootScope.authenticated = true;
      } else {
        $rootScope.authenticated = false;
      }
      callback && callback();
    }).error(function() {
      $rootScope.authenticated = false;
      callback && callback();
    });

  }

  authenticate();
  $scope.credentials = {};
  $scope.login = function() {
      authenticate($scope.credentials, function() {
        if ($rootScope.authenticated) {
          $location.path("/home");
          $scope.error = false;
        } else {
          $location.path("/login");
          $scope.error = true;
        }
      });
  };

  $scope.logout = function() {
    $http.post('logout').success(function() {
      $rootScope.authenticated = false;
      $location.path("/home");
    }).error(function(data) {
      $rootScope.authenticated = false;
    });
  }



  });
<div id="loginbox" style="margin-top:50px;" class="mainbox col-md-6 col-md-offset-3 col-sm-8 col-sm-offset-2">
    <div class="panel panel-info" >
        <div class="panel-heading">
            <div class="panel-title">Giriş Yap</div>
            <p>{{ message }}</p>
            <div style="float:right; font-size: 80%; position: relative; top:-10px"><a href="#">Şifremi unuttum?</a></div>
        </div>

        <div style="padding-top:30px" class="panel-body" >

            <div>
                <form id="loginform" class="form-horizontal"
                      role="form" ng-submit="login()">

                    <div style="margin-bottom: 25px" class="input-group">
                        <span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span>
                        <input id="loginUsername" type="text" class="form-control"
                               ng-model="credentials.username" name="username" value="" placeholder="E-POSTA"/>
                    </div>

                    <div style="margin-bottom: 25px" class="input-group">
                        <span class="input-group-addon"><i class="glyphicon glyphicon-lock"></i></span>
                        <input id="loginPassword" type="password" ng-model="credentials.password" class="form-control" name="password" placeholder="ŞİFRE"/>
                    </div>

                    <div style="margin-top:10px" class="form-group">
                        <!-- Button -->

                        <div class="col-sm-12 controls">
                            <input type="submit" id="btn-login"
                                   class="btn btn-success" value="Giriş Yap"/>
                        </div>
                    </div>
                </form>
            </div>
            <div  id="login-alert" class="alert alert-danger col-sm-12" ng-show="error">
                <p  class="error">Kullanıcı Adı veya Şifre Hatalı</p>
            </div>

        </div>
    </div>
</div>

如何阻止浏览器身份验证对话框?你能帮帮我吗?

共有1个答案

岳曦
2023-03-14

我解决了自己的问题,回答了自己的问题。

我找到了这个答案,就申请了。之后,浏览器身份验证模式对话框隐藏。

 类似资料:
  • 问题内容: 我的Web应用程序有一个登录页面,该页面通过AJAX调用提交身份验证凭据。如果用户输入正确的用户名和密码,则一切正常,但如果不正确,则会发生以下情况: Web服务器确定尽管请求中包含格式正确的Authorization标头,但标头中的凭据未成功进行身份验证。 Web服务器返回401状态代码,并包含一个或多个列出受支持的身份验证类型的WWW-Authenticate标头。 浏览器检测到对

  • 问题内容: 我有一个非常简单的selenium-webdriver脚本。我想使用webdriver进行HTTP身份验证。 脚本: 问题: 抛出 org.openqa.selenium.NoAlertPresentException:不存在警报 题: Webdriver是否仅找到警报对话框作为警报? 在不使用AutoIt或http:// username:password @somesite的情况下

  • 我们试图在本地模式下使用BrowserStack在内部网络上点击AUT。我已经对其进行了配置,以便获得远程浏览器会话,但当我试图通过Chrome将其定向到我们的应用程序(或防火墙内的任何)URL时,浏览器会弹出一个对话框,抱怨连接不是私有的,并要求输入用户名和密码。这不是一个正常的弹出窗口,我们无法使用Selenium自动执行,因此它会阻止我们死亡。 通过桌面浏览器会话访问时,系统知道我是谁,并以

  • 问题内容: 有谁知道在自动化过程中使用Selenium或任何其他工具来处理浏览器身份验证吗? 问题答案: 警报方法authenticateUsing() 使您可以跳过“ Http基本身份验证”框。 从Selenium 3.4开始,它仍处于测试阶段 现在,仅针对 InternetExplorerDriver

  • 我目前正在使用定制的AuthenticationProvider实现将Key斗篷集成到一个相当复杂的spring boot应用程序环境中(因此我不使用Key斗篷AuthenticationProvider)。在我的例子中,我的目标是将OIDC身份验证协议与flow一起使用。 因此,当客户机导航到我的spring应用程序的登录页面时,他会被重定向到KeyClope登录页面。这已经奏效了。 在那里,一

  • 我正在使用C#在selenium web驱动程序中为Chrome浏览器编写一个自动化脚本。我陷入了一个场景:多个选项卡在同一浏览器中打开,我需要导航到浏览器的第一个选项卡,并需要在“身份验证”对话框中重新输入登录凭据。 授权窗口截图如下: 我无法导航到第一个选项卡,也无法传递用户名 执行上述代码后,将出现以下错误: WebDriver等待有一些无效的参数。参数2:不能从int转换为System.时