0

私は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
    {
4

1 に答える 1