在本教程之后,我解决了这个问题。
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>
如何阻止浏览器身份验证对话框?你能帮帮我吗?
我解决了自己的问题,回答了自己的问题。
我找到了这个答案,就申请了。之后,浏览器身份验证模式对话框隐藏。
问题内容: 我的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.时