相关疑难解决方法(0)

Asp.net WebApi中的自定义授权 - 真是一团糟?

我正在阅读有关WebApi授权的几个资源(书籍和SO答案).

假设我想添加自定义属性,该属性仅允许特定用户访问:

情况1

我已经看到了这种覆盖的 方法, OnAuthorization如果出现问题就会设置响应

public class AllowOnlyCertainUsers : AuthorizeAttribute
{
 public override void OnAuthorization(HttpActionContext actionContext)
  {
   if ( /*check if user OK or not*/)
   {
     actionContext.Response = new HttpResponseMessage(HttpStatusCode.Unauthorized);
   }
  }
}
Run Code Online (Sandbox Code Playgroud)

案例#2

但是我也看到了这个类似的例子,它也覆盖了 OnAuthorization但是要求base:

public override void OnAuthorization(HttpActionContext actionContext) 
{ 
  base.OnAuthorization(actionContext);

    // If not authorized at all, don't bother

    if (actionContext.Response == null)  
     {
      //...
     }
}
Run Code Online (Sandbox Code Playgroud)

然后,检查是否 HttpActionContext.Response已设置.如果未设置,则表示请求已获得授权且用户可以

案例#3

但我也看到了这种覆盖的方法IsAuthorized :

public class AllowOnlyCertainUsers : AuthorizeAttribute
{
 protected override …
Run Code Online (Sandbox Code Playgroud)

asp.net authorization asp.net-web-api

108
推荐指数
3
解决办法
7万
查看次数

具有自定义角色的ASP.NET MVC和Windows身份验证

我试图在我的ASP.NET MVC2应用程序中实现Windows身份验证.我遵循了官方文档建议的所有步骤:

<authentication mode="Windows" />

<authorization>
  <deny users="?" />
</authorization>
Run Code Online (Sandbox Code Playgroud)

我已经指定了NTLM身份验证.到现在为止还挺好.一切正常.我想检查登录我的数据库的用户.我想从我的表中获取角色,然后使用自定义属性管理授权.
我不想使用会员和角色提供者. 我已经有我的表用户/角色,因为他们已经被用于互联网应用程序(这是内联网应用程序).

在我的Internet App中,我有一个用户输入数据的表单.表单将发布到控制器,该控制器将检查所有内容并使用登录用户的用户(和角色)创建cookie.

在我的global.asax中,我捕获了AuthenticateRequest事件,在那里我读取了cookie并创建了一个自定义主体,我在整个应用程序中使用它来检查授权.

如何使用Windows身份验证实现此功能?

asp.net asp.net-mvc windows-authentication

15
推荐指数
2
解决办法
2万
查看次数