- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个案例,我需要一些 Controller 方法可以被经过身份验证的用户访问,或者如果请求在 url 中包含一种“访问 token ”。
例如:
经过身份验证的用户可以调用:https://example.com/some/resource
或者未经身份验证的用户可以进行相同的调用,但将某种 token 添加到 url(或作为 header ):https://example.com/some/resource?token=123abc
token 不必是 super secret ,只是一些难以猜测的东西。
[AllowSpecialToken]
[HttpGet]
[Route("some/resource")]
public async Task<string> GetSomeResource()
{
return "some resource";
}
我苦苦挣扎的是如何编写 AllowSpecialTokenAttribute
。以及如何让它在我们现在已经到位的身份验证之前运行(使用 OpenIddict
)。
这是一个愚蠢的用例吗?我应该寻找其他解决方案吗?
提供一些背景信息:我们有一个 SPA 调用我们的 API。 SPA 的某些页面可以通过发送链接与其他人(非用户)共享。该链接将包含 token 。这些页面的内容在安全方面并不重要,但不应完全公开。
最佳答案
您需要制作自己的身份验证属性。我过去做过类似的事情,这是我的 stub :
public class TokenAuthenticationAttribute : AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
// this will read `token` parameter from your URL
ValueProviderResult valueProvided = filterContext.Controller.ValueProvider.GetValue("token");
if (valueProvided == null)
{
filterContext.Result = new System.Web.Mvc.HttpStatusCodeResult((int)System.Net.HttpStatusCode.Forbidden);
return;
}
var providedToken = valueProvided.AttemptedValue;
var storedToken = "12345"; // <-- get your token value from DB or something
if (storedToken != providedToken)
{
filterContext.Result = new System.Web.Mvc.HttpStatusCodeResult((int)System.Net.HttpStatusCode.Forbidden);
return;
}
}
}
然后用属性装饰你的 Action :
[TokenAuthentication]
[HttpGet]
[Route("some/resource")]
public async Task<string> GetSomeResource()
{
return "some resource";
}
让你的 URI 看起来像 https:\\www.example.com\api\some\resource?token=12345
关于c# - 允许 "semi anonymous"认证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47331080/
我正在从lsp模式切换到eglot,并且在C#代码中得到了意外的缩进。我有一个最小的编辑配置文件,只需将INTENT_SIZE设置为2。在我遇到分号之前,一切似乎都很好,在分号处,当前行和下一行的缩进
Avalonia是什么? Avalonia是一个强大的框架,使开发人员能够使用.NET创建跨平台应用程序。它使用自己的渲染引擎绘制UI控件,确保在Windows、macOS、Linux、Androi
我知道我可以像这样获取给定字符串的所有子字符串: String inputString = "abcde"; java.util.Set substrings = new java.util.Tree
给定一个包含 N 个元素的数组,我正在寻找 M (M & result_start_idx ) { const size_t avg_interval_len = num_data / nu
我有一个名为 PaymentFrequency 的枚举类型,它的值表示每年支付了多少...所以我有 public enum PaymentFrequency { None
Windows Phone 工具包的集线器磁贴有问题。 当动画状态更改为“半展开”(图标 + 文本的一半可见)时,我的所有中心图块都会消失。一段时间后,它们会将它们的动画状态更改为不同的状态,并且文本
我尝试使用 alpha channel 渲染我的表面,但是当我设置 alpha 值时,它以随机颜色渲染而不是半透明 // Init memory Q3DSurface *poSurface = new
我知道不存在“半虚拟”方法,但是,我遇到了与设计相关的问题。 假设我有一个名为 WebPage 的基类。此类有一个名为 UpdatePage() 的方法。但是因为此方法存在于抽象 WebPage 对象
我有下面两张图片。 它们是相同的图像,其中一个对文本有轻微的发光效果。 它们的设置如下: 原始图像作为 div 的背景,“发光”图像作为 anchor 标记的背景,display:block; wid
根据 https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html -Wextra-semi 是一个有效的标志。然而,对我来说,即使是 gcc-7.2
编辑:这不是重复的 任何允许在 post() 中锁定互斥锁的问题。请仔细阅读,我需要一个无锁的 post()!如果您没有真正的答案,请不要标记此重复项。 信号量(如在 linux 中)是一个有用的构建
我正在为 semi circle donut 苦苦挣扎Highcharts 聊天。我试图缩小 donut 底部和下面的图例之间的差距,但没有成功。 这是我正在处理的基本图表: https://jsfi
我正在创建像半圆这样的速度计,并且我已经成功地创建了具有所有颜色的半圆。看下面的设计: 我面临的问题是创建用作指针的三 Angular 形。它将在值 300 到 850 之间移动。无论值在此范围内达到
我有一个案例,我需要一些 Controller 方法可以被经过身份验证的用户访问,或者如果请求在 url 中包含一种“访问 token ”。 例如: 经过身份验证的用户可以调用:https://exa
我正在寻找一种方法来禁用通知栏(状态栏)的打开和关闭动画。行为和动画被硬编码在 StatusBarService 中。文档说 StatusBarService 是“半公开的”。 “半公共(public
我想在范围格式中使用枚举,但能够在枚举和无符号整数之间进行比较和赋值。 这是我尝试了下面的代码,它按预期工作: class SystemEvents { public: enum {
我如何获得一个固定的侧边栏,例如包含本网站社交按钮的侧边栏: http://www.tripwiremagazine.com/2012/11/social-media-buttons-and-icon
我想要图像背景中的半圆形进度条。就像下图一样。 我曾尝试使用 Canvas 进行绘制,但未能成功。我也厌倦了一些自定义进度条库,但结果是一样的。 任何建议。 寻求一次性开发并用于各种屏幕尺寸。 最佳答
我正在使用带有 ffmpeg 64 位静态构建的 Windows 8.1 Pro,尝试运行以下 cmd "C:\ffmpeg\bin\ffmpeg.exe" -i "C:\ffmpeg\v.mp4"
是否可以使用 MSF api 将变量指定为半整数(V = 0 或 a = 5; Q1 = 5; Q2 10 * VPositive<= V <= 20 * VPositive ] ] 如果您使用
我是一名优秀的程序员,十分优秀!