好的,首先让我说我真的觉得问这些问题很愚蠢,因为我认为我对事物有很好的理解,但我似乎无法理解 Kentor 授权 MVC 模型发生了什么。例如,在 Web.config 文件中,他们指定了表单身份验证,如下所示:
<authentication mode="Forms">
<forms loginUrl="~/AuthServices/SignIn" />
</authentication>
但我在任何地方都找不到那个终点。然后在 HomeController.cs 文件中,他们有一个这样指定的端点:
[Authorize]
public ActionResult Secure()
{
var identity = System.Web.HttpContext.Current.User.Identity as ClaimsIdentity;
return View(identity.Claims);
}
但是当我通过调试器运行它时,它永远不会被击中。很抱歉提出这样的开放式问题,我知道人们在 Kentor 图书馆投入了大量时间,非常感谢。MVC 示例是否完整,或者其中一些只是您如何做事的示例,但并未真正用于示例项目中?
编辑:我找到了丢失的终点。作为 MVC 的新手,我没有意识到一个基本事实 --> 引用的 DLL 可以添加控制器端点。我认为所有的端点都必须在我的代码中。(让鞭笞开始)。
我现在意识到的是,虽然我在 VS 中被认为是一个 MVC 项目,但我实际上是一个拥有 Web API 的客户端。所以我的问题是我的项目似乎找不到授权/登录端点。我假设这意味着我必须使用 OWIN 模型,我什至不知道 OWIN 是什么,所以这应该是一种享受。
我的下一个问题是无论如何都要使用带有 Web API 的 MVC 模型?如果是这样,我如何让我的客户识别 Kentor 库中的登录端点?
编辑:所以我退后一步,使用 HTTP 模块,而不是潜入 OWIN。我知道我出轨了。一个重要的事实是,如果您使用此模块并继续以未经授权的方式恢复您的身份,请确保此部分在您的 Web.config 中:
<system.identityModel.services>
<federationConfiguration>
<cookieHandler requireSsl="false" name="SomeName" />
</federationConfiguration>
</system.identityModel.services>
我不记得说明中有很多关于此的内容,但对我来说,它允许填充我的 User.Identity 对象。现在我开始尝试找出用户ID(它仍然没有被填充,但在声明中)。希望这个线程在未来对某人有所帮助。