使用不记名令牌授权 ASP.net mvc 操作方法

Posted

技术标签:

【中文标题】使用不记名令牌授权 ASP.net mvc 操作方法【英文标题】:Authorize ASP.net mvc actions methods using bearer token 【发布时间】:2019-07-04 11:42:20 【问题描述】:

我有一个 asp.net web api 作为授权服务器,它在将 us-s-r/pass 传递到其端点时生成带有用户声明的不记名令牌。现在我需要首先通过获取令牌来验证我的 asp.net mvc,然后使用该令牌授权我的 mvc 操作方法(不是从 javascript 调用,想象用户单击关于菜单和操作方法触发器)。我不知道我应该如何以及在哪里解码并创建具有这些声明以授权该方法的身份?感谢您的帮助。

【问题讨论】:

【参考方案1】:

您可以从控制器端调用 HttpRequest 到 API,然后将结果传递给您的视图

当你点击菜单栏或 MVC 中的某个链接时,它会首先点击控制器方法 AS 你知道你需要做的就是将你的控制器方法链接到你的 api 方法,就像这个例子一样

  public async Task<ActionResult> YourMethod()
        
            HttpClient client = new HttpClient();
            var content = new StringContent(Convert.ToString(JsonConvert.SerializeObject(anyobjectToPassifYouHaveOne)), Encoding.UTF8, "application/json");
            HttpResponseMessage result = await client.PostAsync(_API URL, content);
            if (result.IsSuccessStatusCode)
            
                return result.Content.ReadAsAsync<bool>().Result;
            
            return await Task.FromResult<bool>(false);
        

这只是一个关于如何访问您的 api 的示例方法

请注意,由于您使用的是 jwt 令牌,因此您可能希望将令牌保存在会话中并在每个 api 请求中将其添加到您的标头中

【讨论】:

我知道如何访问我的API,问题是如何使用认证服务器生成的不记名令牌授权操作方法?

以上是关于使用不记名令牌授权 ASP.net mvc 操作方法的主要内容,如果未能解决你的问题,请参考以下文章

授权:不记名令牌与 AWS 的令牌授权方相同吗?

带有 rc-1 的 jwtBearer 不记名令牌更新到 ASP.Net 5

Asp.net core 2 - 不记名令牌出现 401 错误

不记名令牌出现 401 错误 - asp.net core 3.1

即使在 asp.net core 5.0 中提供了不记名令牌,也会返回 401 [关闭]

ASP.NET Core API 使用 JWT 不记名令牌进行身份验证