MVC应用程序的Web配置设置

时间:2013-08-27 13:55:12

标签: asp.net-mvc web-config

我一直在寻找mvc授权,并已阅读我不应该在我的网络配置中使用设置,我应该使用授权属性。

我的全局类中有auth设置,并希望将AllowAnnonymous函数用于我的公共控制器。

但是我在测试时会获得凭证提示,我猜测这与我的网络配置文件有关。

目前我的网络配置如下

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

我需要将这些设置更改为,以使这些设置正确吗?

由于

编辑:验证码

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

IIS设置 anon启用 .net imper禁用 Windows身份验证禁用 其他一切都被禁用了

global.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
    {

1 个答案:

答案 0 :(得分: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