我一直在查看 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
{