Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC web应用中的混合身份验证模式(匿名和windows)_C#_Asp.net Mvc_Authentication - Fatal编程技术网

C# MVC web应用中的混合身份验证模式(匿名和windows)

C# MVC web应用中的混合身份验证模式(匿名和windows),c#,asp.net-mvc,authentication,C#,Asp.net Mvc,Authentication,我已经试过了,到目前为止还没有这样的运气来实现我所需要的 我们的网络上有一个MVC应用程序。在内部,它应该使用windows身份验证,我们在许多视图/控制器上使用[AuthorizeByRole(param[]Role roles)]属性 但是,我们还需要外部用户能够访问该应用程序。我们有没有广告认证的承包商和医生,加上移动应用程序使用匿名后端API 我需要做的是: 内部用户:使用windows身份验证自动登录,非常简单 外部用户:挑战windows凭据(确实如此)-如果他们点击“取消”,他们将

我已经试过了,到目前为止还没有这样的运气来实现我所需要的

我们的网络上有一个MVC应用程序。在内部,它应该使用windows身份验证,我们在许多视图/控制器上使用
[AuthorizeByRole(param[]Role roles)]
属性

但是,我们还需要外部用户能够访问该应用程序。我们有没有广告认证的承包商和医生,加上移动应用程序使用匿名后端API

我需要做的是: 内部用户:使用windows身份验证自动登录,非常简单 外部用户:挑战windows凭据(确实如此)-如果他们点击“取消”,他们将成为匿名用户,并且仍然可以查看应用程序

现在发生的情况:点击cancel会使他们重定向到标准asp.net 401页面,而不是查看来宾页面。此外,移动后端只会自动获得401,根本无法访问API

有什么想法吗

更多信息

在我的web.config中,我有:

在我的API控制器中,我将
[AllowAnonymous]
放在控制器和我的
GetKey
方法上
在我的手机上,我进入/api/Auth/GetKey,我面临广告认证的挑战。当我点击“取消”时,我被重定向到401页。

您必须单独修改控制器操作,而不是整个控制器。对于只有AD用户才能执行的操作,请使用[Authorization],并将其他方法保留为匿名用户未修饰的操作。

如果控制器使用
[Authorization]
属性修饰,则可以通过使用
[AllowAnonymous]
属性修饰,将该控制器内的各个方法排除在授权之外

阅读更多关于它的信息


另一方面,您也可以从控制器中删除
[Authorize]
属性,只标记需要授权的方法。

请查看我的更新。我尝试了各种各样的方法,但似乎没有任何效果yet@Para尝试在web.config中注释掉
部分。已验证的应按预期工作(只要控制器和方法标记了各自的
Authorize
AllowAnonymous
属性)。已尝试此操作。双重检查控制器/方法上的[Authorize]-现在所有用户,即使是内部用户,都是匿名的:/@Para这似乎不太正确。你可以把你的一个控制器贴在发生这种情况的地方吗。您可以省略方法体和任何与业务相关的内容。主要是属性很重要。好的,这是一个更接近。。。。我在我们使用的Authorize属性覆盖中遗漏了一些内容。不过,下一个问题是,当我从外部访问该站点时,我并没有被要求提供凭据,只是被作为匿名/来宾传递到该站点