私はmvc認証を見ていて、Web構成で設定を使用してはならず、認証属性を使用する必要がある方法を読みました。
グローバル クラスに認証設定があり、パブリック コントローラーに AllowAnnonymous 関数を使用したいと考えています。
しかし、テスト時に資格情報のプロンプトが表示されます。これは、Web構成ファイルに関係していると推測しています。
現在、私のWeb構成は次のとおりです
<authentication mode="Windows" />
<authorization>
<deny users="?" />
</authorization>
<identity impersonate="true" />
これらを正しくするには、これらの設定を何に変更する必要がありますか?
ありがとう
編集: 認証コード
ホームコントローラーにアクセスすると401が表示されますが、これにはアロイアノンがありません(これが私が望む方法です)パブリックコントローラーにアクセスすると、アロイアノンを含む401も取得します
IIS 設定 anon 有効 .net imper 無効 Windows 認証無効 その他すべて無効
グローバル.asx
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new MyAuthorizeAttribute());
}
authorise.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace ITAPP.Helpers
{
public class authorize
{
}
public class MyAuthorizeAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
var isAuthorised = base.AuthorizeCore(httpContext);
if (isAuthorised)
{
// retrieve authentication ticket from cookie and
// create custome principal and attach to
// httpContext.User
}
return isAuthorised;
}
public override void OnAuthorization(AuthorizationContext filterContext)
{
Roles = @"DOMAIN\Network.Admin"; //Roles is AuthorizeAttribute member
base.OnAuthorization(filterContext);
}
}
}
publiccontroller.cs
namespace ITAPP.Controllers
{
[AllowAnonymous]
public class PublicController : Controller
{