相关疑难解决方法(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自动将未登录的Forms用户重定向到登录页面?

我有一个ASP.NET网站.

我希望未登录的用户被自动(重新)定向到登录页面,例如,

~/Account/Login.aspx
Run Code Online (Sandbox Code Playgroud)

就像现在一样,用户default.aspx无需登录即可访问页面(例如).


注意:我正在操作(可能是错误的)假设ASP.NET在每个(和任何)页面加载之前都有自己的身份验证周期.


更新 @asawyer提供了一个链接,虽然没有帮助回答问题,但确实提供了一个漂亮的图形:

在此输入图像描述

嗯,你有什么尝试?

我有一个web.config启用窗体身份验证的文件:

<?xml version="1.0"?>
...
<configuration>
   ...
   <system.web>
      <authentication mode="Forms">
         <forms loginUrl="~/Account/Login.aspx" name=".ASPXFORMSAUTH" slidingExpiration="true"/>
      </authentication>
      ...
   </system.web>
   ...
</configuration>
Run Code Online (Sandbox Code Playgroud)

当我浏览到"默认"页面时,我能够查看它,例如,

GET http://localhost:53149/WebSite/ HTTP/1.1
Host: localhost:53149
Run Code Online (Sandbox Code Playgroud)

我得到的页面内容:

HTTP/1.1 200 OK
Server: ASP.NET Development Server/10.0.0.0
Run Code Online (Sandbox Code Playgroud)

换句话说,而不是被强迫登录到的网站,我不是被迫在登录到Web站点.

这可能与我的浏览器在本地运行到Web服务器的事实有关; 但我正在使用Forms,而不是Windows(Passport而不是None)认证.

奖金阅读

asp.net

14
推荐指数
1
解决办法
3万
查看次数

MVC:重定向到登录屏幕

我正在接管现有的ASP.NET MVC 5项目,以试图理解MVC框架.我注意到,当用户没有登录,并且他试图访问某些网页时,它会自动将他重定向到登录屏幕.我相信这与Web.config文件中的以下内容有关:

<authentication mode="Forms">
    <forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
Run Code Online (Sandbox Code Playgroud)

但是,即使用户未登录,某些网页也允许访问它们(并且不会如上所述重定向).

所以我的问题是:我在哪里配置哪些网页会自动重定向到登录屏幕,以及哪些网页无需身份验证即可访问?

asp.net-mvc

2
推荐指数
1
解决办法
8135
查看次数