我们对前面的客户端稍加改造,使它可以访问受认证保护的客户端。我们先试验使用HttpClient进行后台访问。先在Startup的配置中增加对myapi的访问:
options.Scope.Add("myapi");
然后创建一个新的页面,修改后台文件的代码如下:
using System.Net.Http;
using System.Threading.Tasks;
using IdentityModel.Client;
using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Newtonsoft.Json.Linq;
namespace MyClientWebHttps.Pages
{
public class GetDataJsModel : PageModel
{
public string token;
public string result;
public async Task OnGet()
{
var auth = await HttpContext.AuthenticateAsync();
var tokens = auth.Properties;
token = tokens.Items[".Token.access_token"];
var apiClient = new HttpClient();
apiClient.SetBearerToken(token);
var response = await apiClient.GetAsync("http://localhost:5007/WeatherForecast");
if (!response.IsSuccessStatusCode)
{
result=response.StatusCode.ToString();
}
else
{
var content = await response.Content.ReadAsStringAsync();
result = content;// JArray.Parse(content);
}
}
}
}
代码很简单,就是取出access_token,并使用这个token访问api资源。访问获得的结果保存在result中。下一步我们研究如何使用ajax访问web api。
网友评论