首页 > 解决方案 > asp.net core 2.1 没有 AccountController

问题描述

我在 asp.net core 2.1 中意识到身份已被转移,但如果您将它们添加为脚手架项目,则可以将它们添加到解决方案中。

它为所有页面添加了所有剃刀类库。

但是我想要做的是使用旧的 AccountController 方式,客户端(移动设备或网络)可以发布到与帐户相关的 API ..

我有什么选择可以恢复旧方式或类似方式。这样我就可以使用客户端的 api

标签: asp.net-coreasp.net-identity

解决方案


不幸的是,它不再存在了。这种变化,以及团队对每个人无休止的 Razor Pages 推动,我个人感到非常恼火,坦率地说,这应该被丢进历史的垃圾箱</rant>

我个人所做的是添加脚手架,然后创建自己的控制器,将 Razor Pages 代码改组并重写为传统的 MVC 样式控制器和视图。不过,这不是一次愉快的经历,但如果你想要这样的话,我不知道还有其他办法。

不过,需要注意的一点是,该AddDefaultIdentity扩展实际上也添加了默认 UI,就好像您已将其搭建到您的项目中一样。换句话说,即使您将所有内容移至控制器和视图并删除所有搭建的东西,Razor Pages 路由仍将优先。更不幸的是,没有很好的选择来添加AddDefaultIdentity. 这就是您需要的:

services.AddIdentityCore<ApplicationUser>(o =>
{
    // Identity config
})
.AddSignInManager()
.AddDefaultTokenProviders()
.AddEntityFrameworkStores<YourContext>();

services.ConfigureApplicationCookie(o =>
{
    o.LoginPath = "/signin";
    o.LogoutPath = "/signout";
    o.AccessDeniedPath = "/signin";
    o.ReturnUrlParameter = "returnUrl";
});

显然,在最后一点,您需要将 URL 更改为您自己的应用程序路由。


推荐阅读