0

我一直在查看 mvc 授权,并阅读了我不应该在我的 web 配置中使用设置,我应该使用授权属性。

我的全局类中有 auth 设置,并且想为我的公共控制器使用 AllowAnnonymous 函数。

但是我在测试时收到了凭据提示,我猜这与我的网络配置文件有关。

目前我的网络配置如下

<authentication mode="Windows" />
    <authorization>
      <deny users="?" />
    </authorization>
<identity impersonate="true" />

我需要将这些设置更改为什么才能使这些设置正确?

谢谢

编辑:验证码

当我访问家庭控制器时,我得到 401,这没有合金(这就是我想要的)当我访问公共控制器时,我也得到 401,它有合金

IIS 设置 anon enabled .net imper disabled windows auth disabled 其他所有内容都已禁用

全球.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());
        }

授权.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);
        }
    }
}

公共控制器.cs

namespace ITAPP.Controllers
{
    [AllowAnonymous]
    public class PublicController : Controller
    {
4

1 回答 1

0

我在 webconfig 中使用此设置对其进行了排序

<system.web>
    <authentication mode="Windows" />
    <identity impersonate="true" />
    <authorization>
      <deny users="?" />
    </authorization>
    <roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider">
      <providers>
        <clear />
        <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
      </providers>
    </roleManager>

在 iis 中:

anon: enabled
.net imper: enabled
windows auth: enabled
于 2013-08-30T08:10:21.607 回答