- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我已经实现了自己的 AuthorizeAttribute
,因为我通过 cookie 传递我的授权 token 。
public class ValidateToken : AuthorizeAttribute
{
public override void OnAuthorization(HttpActionContext actionContext)
{
var headers = actionContext.Request.Headers;
CookieHeaderValue authToken = headers.GetCookies().FirstOrDefault();
CookieState authCookie = authToken.Cookies.Where(p => p.Name == "AUTH-TOKEN").FirstOrDefault();
actionContext.Request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", authCookie.Value);
bool isAuth = base.IsAuthorized(actionContext);
if (!base.IsAuthorized(actionContext)){
HandleUnauthorizedRequest(actionContext);
}
}
protected override void HandleUnauthorizedRequest(HttpActionContext actionContext)
{
actionContext.Response = new HttpResponseMessage(HttpStatusCode.Unauthorized);
}
}
我的问题是,当我返回HttpStatusCode.Unauthorized
时,在HandleUnauthorizedRequest
中再次调用函数OnAuthorization
然后在身份验证检查失败后调用 HandleUnauthorizedRequest
。在第二次调用时,Web API 返回 401
但是我在前端看到了登录屏幕
我不想要一个。我只想像往常一样返回 401。奇怪的是,如果我将 HttpStatusCode.Unauthorized
替换为 HttpStatusCode.Forbidden
,则该函数不会被第二次调用并立即返回。
编辑 我发现 OnAuthorization
被调用了两次并显示了登录表单,因为在 Angular 中我传递了 withCredentials: true
我的 cookies 。所以我需要弄清楚为什么 withCredentials: true
会导致这种情况。
最佳答案
确保匿名身份验证被启用并且Windows身份验证被禁用。
<IISExpressAnonymousAuthentication>enabled</IISExpressAnonymousAuthentication>
<IISExpressWindowsAuthentication>disabled</IISExpressWindowsAuthentication>
关于c# - 返回未授权状态时调用两次 OnAuthorization,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48756053/
我有一个现有站点,该站点的所有 Controller 都有一个基 Controller 类,它覆盖了 OnAuthorization 的实现。在最简单的简化形式中: protected overrid
我有一个自定义过滤器: public class SetAuthFilter : IAuthorizationFilter { public void OnAuthorization(Auth
我已经实现了自己的 AuthorizeAttribute,因为我通过 cookie 传递我的授权 token 。 public class ValidateToken : AuthorizeAttri
我使用具有自定义授权的 WebApi 服务。这是 AuthorizationAttribute:(为了尽可能简单,我删除了所有逻辑并仅尝试发送 401): public class Auth : Au
我已经编写了一个用于 AngularJS XSRF 方法的自定义授权过滤器,但是该过滤器没有被调用。 奇怪的是,我从另一个项目中复制了它,在那里似乎工作正常。 这是属性/过滤器代码。 [Att
我正在编写用于访问另一个 REST API 的 Web API ( v2.2 )。原因是我想限制一些功能并提供更友好的数据。简而言之,我正在为一些 REST API 编写包装器。我通过 Authori
我正在实现 PayPal Checkout 服务器集成,我想知道在触发 onAuthorize 方法时将订单标记为已付款是否安全。 我也想知道是否需要实现 webhook 来验证付款。 谢谢。 最佳答
您好,我正在尝试实现自定义授权过滤器 //The Authourization attribute on a controller public class CustomAdminAuthoriza
为什么 OnAuthorization 为我的直接 AuthorizationFilterAttribute 调用了两次? public class ApiAuthenticateAttribute
如果用户的电子邮件地址尚未经过验证,我会尝试将用户重定向到不同的操作。问题是,我不想让他们注销,我只想重定向他们。当我在 Controller 的 OnAuthorization 中执行此操作时,它会
我看过很多指南,其中自定义授权过滤器的实现涉及调用 base.OnAuthorization(filterContext) 作为最后一步。我有我自己的自定义授权过滤器,它在没有上面提到的情况下工作得很
我正在尝试进行一些自定义授权,因此我创建了一个覆盖 OnAuthorization 方法的 Controller 。我还将 Authorize 属性应用于此 Controller 。问题是为什么在基本
根据documentation on PayPal's Developer site在高级服务器集成下,重定向 URL 必须在付款调用中提供,但是: (…) PayPal does not autom
我有来自 https://developer.paypal.com/demo/checkout/#/pattern/confirm 的以下代码 代码在 Paypal 结帐页面显示时有效,我可以输入我的
我有一个具有两种类型角色的 ASP.NET MVC4 站点:管理员和合作伙伴。 基本上,对站点的所有访问都需要用户进行身份验证并具有管理员角色。因此我在 FilterConfig.cs(从 Globa
我们最近通过使用存储在 Azure 文档数据库中的凭据实现自定义 AuthorizationFilterAttribute 来实现 API 身份验证。 DocDB 要求一切都使用异步。 通过实验,我们
我正在开发用于授权的 Web API 解决方案,我们用 BasicHttpAuthorizeAttribute 修饰了每个 Controller 操作方法。继承自 AuthorizeAttribute
这是我的基本 Controller 的代码,其想法是,如果授权字符串不在 HTTP header 中,我们会将它们踢出。我发誓它本来可以正常工作,但现在突然不起作用了。奇怪的是,当我调试时,它实际上是
早些时候我在asp.net中实现了类似的东西 public class Authentication : AuthorizationFilterAttribute { public overr
我在网站的支付流程中遇到了一个很大的安全问题。 我有一个 nodejs 服务器和一个带有 .js 的标准 html 页面,它使用 Paypal Express 结账。 鉴于我的网络应用程序的性质,我的
我是一名优秀的程序员,十分优秀!