- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想将我的登录表单中由 Razor MVC 帮助程序生成的 RequestVerificationToken 传递给我用来管理应用程序身份验证的 AngularJS 服务
我的表格如下:
<div ng-model="loginRequest" >
<form ng-submit="submit()" ng-controller="loginCtrl">
@Html.AntiForgeryToken()
<input id="username" ng-model="loginRequest.Username" type="text" name="text" />
<input id="password" ng-model="loginRequest.Password" type="text" name="text" />
<input type="submit" id="submit" value="Submit" />
<br/>
isValid: {{loginRequest.isValid}}
<br/>
username: {{loginRequest.Username}}
<br/>
Password: {{loginRequest.Password}}
</form>
</div>
@Html.AntiForgeryToken() 以这种方式呈现:
<input name="__RequestVerificationToken" type="hidden" value="AVzyqDKHSPjaY7L_GTpkasMAABRQRVRFUkFMSUVOV0FSRVxQZWRybwA1">
我的 AngujarJs Controller 成功注入(inject)了我的“loginService”,我可以通过 Post 将用户名和密码发送到服务
function loginCtrl($scope, loginService) {
$scope.submit = function () {
loginService.authenticate($scope.loginRequest,function(data) {
$scope.loginRequest.isValid = (data.User!=null);
//console.log(data);
});
};
}
服务:
angular.module('App.services', ['ngResource']).
factory('loginService',
function ($resource) {
return $resource('/Api/User/login', '',
{
authenticate: {
method: 'POST',
isArray: false,
headers: { 'X-XSRF-Token': '?????' }
}
});
});
我的问题是如何读取表单中呈现的 token 并将其传递给服务并使用从登录表单获取的 token 设置 header ,据我所知这不是操作 DOM 的好习惯,并且我不知道是否需要创建一个指令来执行该任务,因此欢迎提出任何建议!
最佳答案
我想我已经找到了一个非常好的解决方案。我从这里的建议开始http://www.novanet.no/no/blog/olav-nybo/dates/2013/12/anti-forgery-tokens-using-mvc-web-api-and-angularjs/但问题是该指令是在 Controller 之后执行的。所以如果你想检索 Controller 中的初始数据是非常困难的。
不使用该指令,只需使用 $http 服务文档中“设置 HTTP header ”部分 http://docs.angularjs.org/api/ng.$http 下引用的 Module.run() 方法即可。 .
我将上面博客文章中引用的 HtmlHelper 扩展与 body 元素一起使用,然后我的 Module.run() 如下所示:
myModule.run(['$http', function($http) {
$http.defaults.headers.common['RequestVerificationToken'] = angular.element("body").attr('ncg-request-verification-token');
}]);
我认为这是一个非常优雅的解决方案。
关于AngularJS 将 requestVerificationToken 传递给服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18092549/
我想将我的登录表单中由 Razor MVC 帮助程序生成的 RequestVerificationToken 传递给我用来管理应用程序身份验证的 AngularJS 服务 我的表格如下:
我对包含 @Html.AntiForgeryToken() 的表单执行的 ajax 帖子有问题。 当我通过 ajax 发布表单时,我得到以下查询字符串: http://myhost.local/Ass
我的 ASP.NET MVC 应用程序通过使用 ValidateAntiForgeryToken 属性并调用 Html.AntiForgeryToken 来编写具有 token 值的隐藏输入元素,并将
使用ASP.net MVC v2.0,任何方式更改名称__RequestVerificationToken cookies ?为了隐藏我们的底层技术堆栈,我想将 cookie 重命名为无法追溯到 AS
我正尝试在 this 之后授权云提供商在本地主机上,在 ConfigureServices 方法中,我的 Startup.cs 文件有 services.AddAntiforgery(options
我是一名优秀的程序员,十分优秀!