美文网首页
Identity Server 4 学习(七)使用jQuery访

Identity Server 4 学习(七)使用jQuery访

作者: 寻找无名的特质 | 来源:发表于2021-11-13 07:17 被阅读0次

前面我们从后台访问Web Api,现在我们使用jQuery来实现访问。创建一个新的页面,在OnGet中获取access_token并保存:

using System;
using System.Collections.Generic;
using System.Linq;
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 async Task OnGet()
        {
            var auth = await HttpContext.AuthenticateAsync();

            var tokens = auth.Properties;
            token = tokens.Items[".Token.access_token"];

        }
    }
}

在页面上编写jQuery调用Web Api的代码:

@page
@model MyClientWebHttps.Pages.GetDataJsModel
@{
    
}
<div>
    @Model.result
</div>
<div id="result">

</div>
@section Scripts
{ 
    <script type="text/javascript">
        var token = "@Model.token";
        var UserApiUrl = "http://localhost:5007/WeatherForecast";
        $(document).ready(function () {
            $.ajax({
                beforeSend: function (xhr) {
                    xhr.setRequestHeader("Authorization", "Bearer " + token);
                },
                url: UserApiUrl,
                type: 'get',
                success: function (res) {
                    $("#result").text(res);
                    alert("success");
                },
                error: function (err) {
                    console.log(err);
                    alert(err.statusText);
                }
            });
        });
        
    </script>
}

与一般调用时的区别是增加了beforeSend,里面增加认证。访问时会发生错误,不允许跨域访问,还需要在Web Api中增加CORS的设置:

           services.AddCors(option => option.AddPolicy("cors", 
                policy => policy.AllowAnyHeader()
                .AllowAnyMethod()
                .AllowCredentials()
                .WithOrigins(new[] { "https://localhost:5006" })));

......
              app.UseCors("cors");

这样就可以了。

相关文章

网友评论

      本文标题:Identity Server 4 学习(七)使用jQuery访

      本文链接:https://www.haomeiwen.com/subject/koyrzltx.html