Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果用户未经授权,则返回较少的数据_C#_.net_Service_Authorization - Fatal编程技术网

C# 如果用户未经授权,则返回较少的数据

C# 如果用户未经授权,则返回较少的数据,c#,.net,service,authorization,C#,.net,Service,Authorization,我在控制器中有此方法: [路由(“api/AppSearch/Search”)] [HttpPost] [授权] 公共异步任务搜索([FromBody]AppSearchRequest请求,字符串类型=”) { IEnumerable data=wait SearchServiceV2.Search(request.SearchCriteria、request.AppKeyColumn、request.Filters、request.MaxResults、type); 如果(数据==null)

我在控制器中有此方法:

[路由(“api/AppSearch/Search”)]
[HttpPost]
[授权]
公共异步任务搜索([FromBody]AppSearchRequest请求,字符串类型=”)
{
IEnumerable data=wait SearchServiceV2.Search(request.SearchCriteria、request.AppKeyColumn、request.Filters、request.MaxResults、type);
如果(数据==null)
{
var resp=新的HttpResponseMessage(HttpStatusCode.NotFound)
{
Content=新的StringContent(string.Format(“未知类型”,类型)),
ReasonPhrase=“未知类型”
};
抛出新的HttpResponseException(resp);
}
返回此.AssembleSuccessResponse(数据);
}
我想根据用户是否被授权返回不同的数据。如果用户被授权,我希望它返回AppSearchResponse,如果没有,则返回一个包含3个AppSearchResponse成员的类

我最初的想法是创建包含这3个字段的AppSearchResponseBase,然后让AppSearchResponse扩展它。然后,检查用户是否在控制器方法内获得授权,并将
数据
变量序列化为AppSearchResponseBase或AppSearchResponse

e、 g

if(授权){
返回此.AssembleSuccessResponse(数据)
}否则{
返回此.AssembleSuccessResponse(数据)
}

我最好只创建一个新资源,比如
api/AppSearch/SearchUnauthorized/

我会做一些事情,比如创建一个包含以下信息的
AppSearchResponse
类:

public AppSearchResponse{
    public string Username {get;set;}
    public DateTime Joined {get;set;}
    // etc
    public ExtendedData ExtendedData {get;set;}
}

然后,如果用户具有适当的访问权限,则仅填充扩展数据(其中将包含“安全”字段)。在客户端,
ExtendedData
如果客户端没有提供适当的凭据或其他什么,则将是
null

但是我必须更改UI以支持新的序列化类(即ExtendedData)。您当前是否有两个视图(完整和不完整数据各一个),还是根据返回类型更改的一个视图?无论哪种方式,你都会被安排来处理这件事。在前者中,更改“complete”视图以不显示额外属性;在后者中,在现有的条件中处理它。我有一个完整数据的视图,没有一个不完整数据的视图,因为数据只能通过API调用使用。我认为有一种更明显的方法可以根据角色返回不同的数据。我可能会坚持检查控制器方法中的角色,然后执行IF-ELSE