c# - Sitecore 7.2 - 项目 Web API - 用户身份验证

标签 c# sitecore sitecore7.2

我想限制 Sitecore Item Web API 仅向经过身份验证的用户发送数据,根据文档,我们需要在 http 请求 header 中将用户名和密码作为 X 传递-Scitemwebapi-用户名 & X-Scitemwebapi-密码

为此,我使用了以下代码:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://scapidemo.local/-/item/v1/?sc_itemid={110D559F-DEA5-42EA-9C1C-8A5DF7E70EF9}&sc_database=master");

request.Headers["X-Scitemwebapi-Username"] = "admin";
request.Headers["X-Scitemwebapi-Password"] = "b";

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Response.Write(String.Format("Content length is {0}", response.ContentLength));
Response.Write(String.Format("Content type is {0}", response.ContentType));
// Get the stream associated with the response.
Stream receiveStream = response.GetResponseStream();

// Pipes the stream to a higher level stream reader with the required encoding format. 
StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8);

Response.Write("<br /> Response stream received. <br />");
Response.Write(readStream.ReadToEnd());

Sitecore.ItemWebApi.config 中,我为我的网站添加了如下设置:

itemwebapi.mode="StandardSecurity"
itemwebapi.access="ReadOnly"
itemwebapi.allowanonymousaccess="false"/>

现在在运行我的应用程序时出现此错误:

{"statusCode":401,"error":{"message":"Access to site is not granted."}}  

最佳答案

您正在传递没有所属域的用户。 ItemWebAPI 没有默认域,因此每次调用时都需要像这样传递用户“域\用户”。

综上所述 - 像这样尝试:

request.Headers["X-Scitemwebapi-Username"] = @"sitecore\admin";
request.Headers["X-Scitemwebapi-Password"] = "b";

关于c# - Sitecore 7.2 - 项目 Web API - 用户身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25383502/

相关文章:

c# - 根据下拉选择将 ID 保存到数据库

c# - 使用具有不同类型详细信息的主从 View

validation - Sitecore WFFM 必填字段的客户端验证

针对 DropTree 字段的 Sitecore 查询

c# - 将Json反序列化为在Asp.net中实现Ienumerable的类

c# - MVVM 将 IsEnabled 绑定(bind)到 ViewModel 中的多个 bool 值

sitecore - 从哪里下载 sitecore 6 入门套件

css - 如何在 CMS 的所见即所得内容生成器/编辑器中向非技术客户提供向内容添加 css 类/ID 的选项?

sitecore - 为什么 Glass Mapper 返回空值?

Sitecore.ContentSearch 按字段值搜索