【问题标题】:Allow anonymous in conventional routing endpoint ASP .Net Core在常规路由端点 ASP .Net Core 中允许匿名
【发布时间】:2019-09-17 03:36:08
【问题描述】:

我有一条希望允许匿名的路由,配置如下:

        app.UseMvc(routes =>
        {
            routes.MapRoute(
               name: "myEndpoint",
               template: "myendpoint",
               defaults: new { controller = "MyEndpoint", action = nameof(MyEndpoint.Get) }
            );
        });

问题是它会将我重定向到 oAuth 页面,我希望 myendpoint 允许匿名用户并绕过 oAuth 页面。我尝试在方法和类中使用AllowAnonymous 属性,但没有成功。

这是我的控制器:

namespace MyNamespace
{
   /// <summary>
   /// My Endpoint API
   /// </summary>
   public class MyEndpointController : Controller
   {
       public MyEndpointController()
       {
       }

       /// <summary>
       /// My Endpoint
       /// </summary>
       public MyInfo Get()
       {
           return new Data
           {
              Data = Value
           };
       }
   }
}

【问题讨论】:

  • 请添加你应用AllowAnonymous属性的控制器代码
  • 嗨@Alexander 我添加了控制器。
  • 谢谢。我试试看
  • 嗯,控制器本身不包含AuthorizeAttribute。您是否配置了全局身份验证?也许您也可以共享该代码?
  • 我认为它具有全局身份验证,我是新手,但它在服务中调用 AddAuthorization,并且配置了 OAuth。 Startup 类很大,但我会尽量剪掉不必要的部分并贴出来。

标签: c# asp.net-core oauth


【解决方案1】:

将 [AllowAnonymous] 添加到家庭控制器,以便匿名用户在注册之前可以获取有关该站点的信息。

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Authorization;

namespace ContactManager.Controllers {
[AllowAnonymous]
public class HomeController : Controller
{
    public IActionResult Index()
    {
        return View();
    }
}

【讨论】:

  • 嗨@awais 感谢您的回复。我尝试按照您的建议在方法级别和类级别添加属性,但没有奏效。它仅在我使用属性路由但我想使用常规路由时才有效。
  • 你的答案@awais 是正确的,但是我的启动课有问题。我如何解决它是在问题下方的我的 cmets 中。
  • 你好@MauriR 我的启动类是这样的,我也定义了我的默认控制器。它可以与 [AllowAnonymous] 一起正常工作,您可以尝试一下。 public void Configure(IApplicationBuilder app, IHostingEnvironment env) { app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Account}/{action=Login}/{id?}") ; }); }
猜你喜欢
  • 2019-11-23
  • 1970-01-01
  • 2021-01-11
  • 1970-01-01
  • 2019-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多