我一直在寻找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
{
答案 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