AspNet Core足場アプリのログインページと登録ページはどこにありますか?


137

VS 2017では、新しいASP.NET Core Webアプリケーションを作成しました。ウィザードの2番目のページでは、Webアプリケーションを選択し、認証には「個人ユーザーアカウント」を選択しました。

今、私は/ Account / Registerおよび/ Account / Loginに関連付けられたページを見つけようとしています

_Layout.cshtmlは、従来のMVCと同様に、_LoginPartial.cshtmlを取り込みます。

<div class="navbar-collapse collapse">
    <ul class="nav navbar-nav">
        <li><a asp-page="/Index">Home</a></li>
        <li><a asp-page="/About">About</a></li>
        <li><a asp-page="/Contact">Contact</a></li>
    </ul>
    <partial name="_LoginPartial" />
</div>

ユーザーがサインインしていない場合、_LoginPartialには<a>、ログインページと登録ページを指すタグが含まれます。

<ul class="nav navbar-nav navbar-right">
    <li><a asp-area="Identity" asp-page="/Account/Register">Register</a></li>
    <li><a asp-area="Identity" asp-page="/Account/Login">Login</a></li>
</ul>

それはすべて理にかなっているようです。しかし、Areasフォルダーの構造には、RegisterフォルダーとLoginフォルダーが含まれているはずです。ありません。私が見つける唯一のものは_ViewStart.cshtmlです

エリアファイルの構造

足場コードが機能することを知っています。プロジェクトを実行すると、登録リンクは「/ Identity / Account / Register」を指し、ログインリンクは「/ Identity / Account / Login」を指します。「登録」リンクをクリックすると、「新しいアカウントを作成」というテキストを含む登録ページが表示されます。

しかし、「Create a new account」というテキストがプロジェクトのどこにも見つかりません。

誰かが私が欠けているものを教えてもらえますか?

回答:


141

asp.netコア2.1のプレビュー中に、Identity UIが新しいRazorクラスライブラリに移動されることが発表されました。 https://blogs.msdn.microsoft.com/webdev/2018/03/02/aspnetcore-2-1-identity-ui/

ローカルビューを希望する場合は、アイデンティティビューを独自のプロジェクトに足場することができます。https//docs.microsoft.com/en-us/aspnet/core/security/authentication/scaffold-identity? view = aspnetcore-2.1 &tabs = visual-studio


115
答えは高く評価し、マイクロソフトは低く評価します。開発者からコードを隠し、Authに使用する基本的なUIを提供することのポイントは何ですか?それはとても面白いです。マイクロソフトに来て、コードを調べて、それを学び、それを壊し、修正し、そしてデプロイしたい。これは奇妙です。
Teoman Shipahi

4
すべてのIDファイルをローカルに取得できるように、PMコマンドがありますか?
パンキーシャルマ2018

3
@pankysharma私はそれを行うためのコマンドを使用して回答を追加しました(将来の誰かがそれを必要とする場合に備えて)。
Alisson、

3
Razorページを真剣に使用する必要がありますか?通常のMVCビューを単純に足場するオプションはありませんか?
clockwiseq

他の誰かが私のように馬鹿である場合...ファイルを右クリックして[ページモデルに移動]を選択してGet / Postコードを表示できることを理解するのに必要な時間より長くかかった
Shoe

59

これはVisual Studio内から行うことができます。プロジェクトを右クリックして、[追加]> [新しい足場アイテム]を選択します。

新しい足場アイテム

次に、IDを選択し、[追加]をクリックします。 IDを選択

次に、上書きするページを選択します。データコンテキストクラスをドロップダウンします。名前空間とコンテキストがあらかじめ入力されているはずです。

ページを選択

最後に「追加」をクリックします。そこに既存の上書きファイルがある場合(つまり、テンプレートから)、上書きについて警告します。


これは実際には機能します。ただし、ログインページ(カスタマイズしたいページ)をインポートした後、コードが正常にコンパイルされません。解決策はここにあります:stackoverflow.com/questions/58277172/…
Yossi Geretz

すばらしい回答をありがとうジョン、ユーザークラスのドロップダウン(フォームの最後)が無効になっている理由はありますか?
Hamza Khanzada

1
ありがとうございましたdid
AhmadMM

メモリから、データコンテキストクラスを作成すると(+ボタンをクリックして)、ユーザークラスが有効になります
John Rah

14

プロジェクトを右クリックしてAdd -> New Scaffold Item[]を選択し、ダイアログの左側のペインで[ ID ]を選択します。

ここに画像の説明を入力してください

ここに画像の説明を入力してください


次のコマンドを使用して、これらのページを生成することもできます。

dotnet aspnet-codegenerator identity -dc WebApplication1.Data.ApplicationDbContext

必ず独自の名前空間+ DbContext名に置き換えてください。ページはここに生成されます:

ここに画像の説明を入力してください


この問題が発生した場合:

「デフォルトのリテラル」機能は、C#7.0では使用できません。言語バージョン7.1以降を使用してください。

これを追加して.csproj再構築することで修正できる場合があります。

<PackageReference Include="Microsoft.CodeAnalysis.Common" Version="3.2.0-beta3-final" />
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="3.2.0-beta3-final" />
<PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="3.2.0-beta3-final" />

エラー:dotnet:足場に失敗しました。フォルダにプロジェクトファイルが見つかりませんでした
DiegoVenâncio19年

@DiegoVenâncioはWebApplication1.Data.ApplicationDbContext正しい名前空間とファイル名に置き換えましたか?
Alisson

2
もちろん、この最後の行を削除してから作業してください:<PackageReference Include = "Microsoft.CodeAnalysis.CSharp.Workspaces" Version = "3.2.0-beta3-final" />
DiegoVenâncio19年

1
また、Visual Studioのソリューションエクスプローラ経由でこれを行うことができますstackoverflow.com/a/54995794/2073738
スーツボーイアプリ

1
@DaImTo dotnetとaspnetの間にハイフンを入れないでください。それはあるはずですdotnet aspnet-codegenerator。多分これが問題ですか?
Alisson

6

'すべてのIDコードをアプリケーションに含めて、好きなように変更できるようにする場合は、新しいID足場を使用して、アプリケーションにIDコードを追加できます。すべての足場付きIDコードはID固有の領域フォルダーに生成されるため、アプリケーションコードから適切に分離されたままになります。

https://blogs.msdn.microsoft.com/webdev/2018/02/02/asp-net-core-2-1-roadmap/#identity

それは私にとってかなり素晴らしく簡単です。


1
localhostでIDコードを表示または編集するために変更する方法
panky sharma 2018

今日、これを2.2に更新した既存のプロジェクトで使用しました。既存のDbContextを使用しており、Identityから継承している既存のコンテキストを伝えると、すばらしく機能しました。
jamheadart

1

パーティーに少し遅れましたが、Identity UIへの不満のせいで私はあきらめました。それなしでプロジェクトを作成します。私のアドバイスは(2.1または2.2を使用する場合)独自のアカウント/管理コントローラーとmvcページを作成することです。startup.csのデバッグが必要になります。また、ビューの公開(views.dll)コンパイルオプションを無効にします。多分私はオプションを設定していませんが、コンパイラはページレベルのスクリプトブロックの変更を完全に無視します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.