Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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# 4.0 如何在Azure移动应用程序服务中修饰客户端方法以包装身份验证?_C# 4.0_Asp.net Web Api_Asp.net Mvc 5_Custom Attributes_Azure Mobile Services - Fatal编程技术网

C# 4.0 如何在Azure移动应用程序服务中修饰客户端方法以包装身份验证?

C# 4.0 如何在Azure移动应用程序服务中修饰客户端方法以包装身份验证?,c#-4.0,asp.net-web-api,asp.net-mvc-5,custom-attributes,azure-mobile-services,C# 4.0,Asp.net Web Api,Asp.net Mvc 5,Custom Attributes,Azure Mobile Services,讨论中的系统是一个移动应用程序服务Xamarin.Forms应用程序,具有C#5.0/MVC 5.0/WebAPI 2.0后端。该应用程序在客户端使用LoginAsync进行自定义身份验证,并在后端的ApicController和TableController类和方法上使用“[Authorize]”装饰。当前,当为后端调用返回未经授权的HTTP状态代码时,没有显示自定义身份验证屏幕的自动工作流。对于每个进行数据库调用的方法,在客户机上添加下面的身份验证代码是重复的,而且工作量很大。我想创建一个自

讨论中的系统是一个移动应用程序服务Xamarin.Forms应用程序,具有C#5.0/MVC 5.0/WebAPI 2.0后端。该应用程序在客户端使用LoginAsync进行自定义身份验证,并在后端的ApicController和TableController类和方法上使用“[Authorize]”装饰。当前,当为后端调用返回未经授权的HTTP状态代码时,没有显示自定义身份验证屏幕的自动工作流。对于每个进行数据库调用的方法,在客户机上添加下面的身份验证代码是重复的,而且工作量很大。我想创建一个自定义客户端属性(或等效属性),它可以用来修饰客户端类或方法,如果给出未经授权的响应,这些类或方法将处理身份验证

wrapped方法在功能上应位于此构造内部:

试试看
{
…//修饰、属性化或包装方法
} 
捕获(MobileServiceInvalidOperationException msioe)
{
if(msioe.Response.StatusCode==HttpStatusCode.Unauthorized){
…//执行登录活动
}
}


如何实现将相同身份验证代码应用于所选方法的简单方法(例如,使用从IActionFilterAttribute或IAAuthenticationFilter派生的自定义属性)?

最简单的方法是添加一个捕获401响应并启动身份验证流的委派处理程序。下面是一个如何执行此操作的示例:

要使用,请将其作为参数添加到
MobileServiceClient
构造函数调用中:

new MobileServiceClient(URL,new AuthHandler())