このレッスンでは、楽しい新素材をお見せします。
私たちはユーザーモデルで、ユーザーが作成していないキャンプ場を削除できないように、またはユーザーがキャンプ場を編集できないことを確認するために、キャンプグラウンドとの認証を組み合わせます作成されませんでした。
そしてこれは認可と呼ばれるものです。
だから、認証と認可の違いは、誰かが誰であるかを知ることです。
誰かが誰かを知っていれば十分な承認が得られます。
あなたは彼らが何をすることが許されているのか理解しています。
だからそれをパーミッションと考える。
私たちのアプリケーションでセキュリティクリアランスを行う権限を与えられた人物は何ですか？
だから、もしあなたが同じものを持っていなければ、キャンプ場を所有していないならば。 D.
キャンプグラウンドの作成者は、あなたがそれを更新または削除することができないようにします。
ですから、簡単に始めましょう。あなたがキャンプ場を所有していない限り、編集フォームを提供できないように作業しましょう。
そこでここのキャンプ場のルートに行きましょう。
私たちがやりたいことは、あなたがキャンプ場のルートに行こうとしたり、更新したり、最終的に削除したりして、3つすべてを確認するだけで同じ論理を持つ必要がある場合です。
現在のユーザーはIですか。 D. そのキャンプ場の作者のIDと一致させる。
だから、これは私たちがキャンプグラウンドモデルをプルアップするところで私たちのデータ構造がどのように見えるのかを覚えておいてください
私たちには各キャンプ場の著者がいて、私にはIがあります。 D. それは私になる​​だろう D.
特定のユーザのオブジェクトIを参照するユーザについては、 D. それから私たちはもちろん、オブジェクトIを持っているユーザーを持っています。 D. ここには指定されていませんが、すべてのユーザーにはIがあります。
D. 現在ログインしているユーザーIを比較します。 D.
キャンプグラウンドの作者のドットIDに、私たちがそれを上手くいくと、それをかなり簡単に行うことができます。
私たちはそこから始めます。
私たちが最初にやりたいことは、ユーザーがログインしている人です。
そしてもしそうでなければ、私たちは夏をリダイレクトします。
ユーザーがログインしている場合、ユーザーはキャンプ場を所有していますか？
もしそうなら、私たちはユーザーにこのコードを実行させてIDを探し、すべてを削除させます。
それ以外の場合はリダイレクトします。
だから誰かがログインしているかどうかを調べるためにこれを記入しましょう。
要求されたことが認証された場合にのみ書き込むことができます。
ここですでに定義した中間を使用することもできます。
なぜ私たちはそれをやろうとしないのかをあなたに示します。
簡単な答えは、私たちが独自のミドルウェアを定義していることです。
そこで、このミドルウェアの代わりにその機能を組み合わせる予定です。
そのような場合にリクエストが認証された場合は、次に進むことができます。
そうでない場合は、開始するために一定のログを作成しましょう。
それを行うにはログインする必要があり、それから私たちは応答をします。
そして、単にsendを送信してsendを送信してみましょう。これを実際に送信します。
したがって、ログインしていないことがわかると、最初のことが機能します。
だから、このコードをif文の中にコピーし、適切に字下げしましょう。
OK。
だから我々はログインしなければならない。
私たちはこれを行うためのコードをすでに書いています。
だから、あなたは私がどこかで奇妙なやり方でこれについてやっているところを考えているかもしれません。
しかし、ちょうどその瞬間にあなたが見えるでしょう。
それを試してみましょう。
保存を開始してサーバーを起動します。
そして、私が立ち上げた時、私はログインしていません。
誰もログインしていません。
だから私が試してみると、あなたがそれをするためにログインする必要があると私に伝えます。
最初の部分はうまく動いています。
それから私たちは拘束された後、ここに別の声明を出して確認します。
ユーザーはキャンプ場を所有していますか？
私たちがやる方法はかなりシンプルです。
私たちが最初にやるべきことは、私たちがすでにここで行ったキャンプ場を見つけることです。
そして、それを見つけたら、そのキャンプ場の作者のIDがそのユーザーを要求している現在のユーザーと一致するかどうかを確認する必要があります。
それから私たちは行くのが良いです。
ここにはキャンプ場でユーザーが実際に行うことがあります。
エラーがなければエラーをチェックしてからチェックします。
キャンプグラウンドが見つかったためキャンプ場にいるユーザーは存在し、if文があり、キャンプグラウンドの作成者IDがBの場合はBが表示されます。
等しいは等しいequalsです。
ユーザーのドットアンダースコアIDを要求します。
だから私はあなたの連絡先のログキャンプ場の作者のIDを考えてみましょう、それからそのユーザーがそのアンダースコアIDをそのログ要求をキャンセルすることを意味するものを示すことができます。
if文をコメントアウトします。
そこで、これらの2つの行を見ていきます。
私はちょうど私達が間違いがある私達がログインしないで今すぐ試み、更新するならば私はもちろんログインする必要があります。
しかし、私が今ログインすると、ポテトヘッドがログインした後、私は花崗岩の鉱山のスラッシュに戻ります。
私たちには問題があります。
見えるように見えます。
まあそれはばかげていたし、アーサーのキャンプ場でキャンプ場のようにキャンセルしようとすることは存在しません。
キャンプ場が見つかりました。
だから、もう一度サーバーを再起動してみます。
初めて私たちは新鮮です。
あなたは、あなたがまだログインしておく必要があることを私たちに伝えています。
もう一度、Potato Headにログインします。
パスワード。
OK。
今私が試してみると、ここで見ているものを見てみましょう。
最初に印刷するものは、このようになります。
それはキャンプ場Arthur IDが見つかったので、ユーザーデータIを要求しています。 D. 彼らは同じであるように見えます。
そしてそれらがプリントアウトされるとき、それらは同一です。
しかし、背後では実際には同じではないので、ユーザーIDのアンダースコアIDは文字列で、キャンプ場の作者のドットIDはオブジェクトであり、それはmongooseオブジェクトです。
そして、これはちょっと難しいことです。
私は時々それを忘れてしまいます。あなたがデバッグしようとしているときに同じように見えるので、本当にイライラしますが、真実は最初の文字列ではなく、実際は文字列ではありません。
それが私たちが印刷したもの。
文字列が表示されていますが、これは2文字列のバージョンです。
背後には文字列ではありません。
これは文字列です。
だから私たちはそれらを比較するとうまくいかないでしょう。
だから、それらをトリプル・イコールまたはダブル・イコールと比較するのではなく、私たちが代わりにできることは、マングースがこの目的のために私たちに与える方法を使用することです。
だから、キャンプ場を調べるのではなく、IFステートメントを書くことです。
著者Dodd IDトリプルは、ユーザーIDでの要求と同じです。
私たちはドットを使う。
そこに行く。
そして今私たちのIFステートメントは、このIDを使って見つけているデータベースに戻ってくるものを再びキャンプグラウンドで見つけなければならないという事実を除いて、機能するはずです。
そこで、経路のIDに基づいて、その特定のキャンプ場の著者IDが現在ログインしているユーザーIDと等しいかどうかを確認します。
その場合、私たちは一つのことをします。
さもなければ私達は何か他のことをします
もしそうなら、私たちがこれを行うでしょう。ここでは、キャンプグラウンドのページを、キャンプグラウンドが見つかったページをレンダリングします。
さもなければ私達は休息をしますか？
あなたはそれを実行する許可を持っていませんが、最終的にこれを変更するか、それはちょうど赤いドットセントではありませんが、実際のメッセージが表示されます。
だから私たちのアプリケーションに行ってみましょうショーページの最初のものに行く私は試してみて、今私はログインする必要があります。
今私がログインするか、ポテトヘッド以外の誰かとしてサインアップすると、トマトの頭が鳴り、うまくいけばそれを試してみてください。
私たちはあなたがそれを行う許可を持っていない取得行く。
今戻ってログアウトして、Potato
Headとしてサインインしてもう一度試してみると、私は試して編集します。
私には許可があります。
そして私はここで終わります。
それは働いている。
それは素晴らしいです。
ここでは実際にこれを別の関数にリファクタリングします。
この論理の大部分は、それを何かのように呼ぶでしょう。
ユーザーのキャンプ場を確認するか、基本的に確認しているキャンプ場のユーザーに、現在ログインしているユーザーがこの特定のキャンプ場に一致するか確認します。
ミドルウェアに移行する理由は、編集時にそれを使用することです。
また、更新時にも使用したいと考えています。
ログインしていないユーザーはリクエストを送信できないようにします。
だから、再びブラウザを使用して。
実際に視覚的にデータを送信するための更新を行う唯一の方法は、このフォームを使用することです。
あなたは、郵便配達員に、郵便配達員からのリクエストを送信し、認証されないようにすることができます。
だから私たちはここで同じロジックを望んでおり、削除のために同じことをしたいと思っています。
だから、ログインしていなければキャンプ場を削除することはできません。
あなたがそれを所有していないならば。
それでは、このコードをコピーするミドルウェアを作成します。
私はそこに残しておきますが、私たちは他のミドルウェアだけで今のところダウンするつもりです。
まあ、最終的なものは、ちょうどそのようなチェックキャンプグラウンドの所有権を呼び出した。
そして、このコードを貼り付けて、ここで少し作業します。
しかし最終的な目標は、私たちの編集でミドルウェアを追加してキャンプグランドのオーナーシップをチェックできるということです。
私たちはそれを更新できるはずです。
また、削除しても、それから始めるつもりです。私たちがやりたいことは、チェックです。
最初にリクエストレスポンスを追加し、次にミドルウェアがリクエストレスポンスを設定するようにしてください。
したがって、ユーザーが現在ログインしている場合は、
もしあなたが私たちの休息をするよりも、ログインしていなければ動いてください。
今のところ、レストランをリダイレクトする予定で、まだ見ていません。
私たちはredstartリダイレクトバックを行うことができ、それはユーザーが最も多くのものか​​ら来た場所に戻るでしょう。
以前のページでは、すぐにメッセージを送信する方法を紹介します。
あなたが送信したいメッセージは、あなたがログインしていないか、それを許可する必要がありますが、私たちは今のところそれを残しています。
ログインしている場合は、キャンプ場を探します。
エラーがある場合は、リダイレクトするだけです。
このエラーは、何らかの理由でキャンプ場が見つからない場合や、データベースが接続されていない場合や、キャンプ場がリクエストのユーザーIDと一致している場合に実際には実際には表示されないという奇妙なことです。
だから、このミドルウェアが編集をレンダリングしたくないので、キャンバスをレンダリングするのではなく、これを所有しているユーザーが編集したい場合は、コードの残りの部分に移動してコードに移動します更新または編集。
それで、私たちは次のことをします。
それ以外の場合は、所有していない場合はrezリダイレクトを行います。
すばらしいです。
これを試してみましょう。ここで編集ルートを更新しましょう。
私たちはこれを多くトリムすることができますので、これを行う必要はありません。ただし、キャンプ場を探したいのですが、キャンプ場を見つけたら、それを確認する必要はありません私たちが真ん中でやっているので、私たちがやりたいことは、キャンプ場がこのすべてを取り除くことができるということです。
ほとんどすべてのOffice形式でこれが正しく行われますので、多少なりともなります。
そこに行く。
だからScheckのキャンプグラウンド所有率をここに加えたのは、今ここで行っているのは、すでにキャンプグラウンドの所有権をチェックしており、それを完成させたということです。
そうでなければ問題が発生した場合、私はエラーが発生しているのを見るとリダイレクトされてしまいます。ここに小さな構文エラーがあります。私はここで関数宣言を削除しています。私たちは対処できました。
しかし、私たちがここまで来たらPI IDを見つけることに間違いはないはずです。
そして、それがここで働くならば、とにかく行くのが良いはずです。
ですから、問題があるかどうか試してみましょう。
基本的には、コードを別の関数に移しました。
また、ミドルウェアは、適切なハンドラに到達する前に呼び出されます。
OK。
それでは、それを打ちましょう。
まず最初に戻り、試して編集をクリックしてみましょう。
私はログインしていない。
それは私を私がどこにいたかに戻すべきです