【发布时间】:2015-11-20 05:43:05
【问题描述】:
我正在使用 Azure 移动服务(遵循标准的 Azure TodoItems 教程),他们提供的最基本的 GET 方法是:
public IQueryable<MyModel> GetAllMyInfo()
{
return Query();
}
这可行,但我正在尝试对其进行扩展,以便该方法仅返回经过身份验证的用户的 MyModel 数据(由移动服务 API 调用的 X-ZUMO-AUTH 身份验证标头标准标识)。所以我修改了代码:
public IQueryable<MyModel> GetAllMyInfo()
{
// Get the current user
var currentUser = User as ServiceUser;
var ownerId = currentUser.Id;
return Query().Where(s => s.OwnerId == ownerId);
}
这在传递有效的身份验证令牌时也有效。 但是,如果传递了无效的 auth 标头,则 currentUser 为 null,并且查询失败(显然)。所以我试图检查 null 并返回 BadRequest 或 403 HTTP 代码。然而,一个简单的 `return BadRequest("Invalid authentication") 会产生编译错误:
public IQueryable<MyModel> GetAllMyInfo()
{
// Get the current user
var currentUser = User as ServiceUser;
if(currentUser == null) {
return BadRequest("Database has already been created."); // This line gives a compilation error saying I need a cast.
}
var ownerId = currentUser.Id;
return Query().Where(s => s.OwnerId == ownerId);
}
有谁知道如何检查有效的身份验证令牌并在此方法上返回 403(需要 IQueryable 返回类型?
【问题讨论】:
标签: c# linq azure azure-mobile-services