3

私はゆっくりとRESTを理解し始めており、私を混乱させることが1つあります。

私は、RESTのほとんどのものが「リソース」であることを理解しています。それで、ユーザーのサインアップ/ログインの場合、どのようなリソースを参照するのだろうかと思っていましたか?

それusersですか?それでは、usersPOSTonが新しいユーザーにサインアップすることを意味しますか。その場合、ユーザーを認証するにはどうすればよいですか?usersエンコードされたパスワード/ユーザー名のペアでGETしますか?

私はこれと本当に混乱しています。

私はRESTを理解し始めたばかりなので、私の理解は完全に間違っているかもしれません。

どんな助けでも大歓迎です!

ありがとう!

4

4 に答える 4

2

これは、RESTにとっては少し珍しいが、一般的な問題です。リソースについて考え続けてください。

ログインすると、特定のリソースにアクセスするためのセッションを作成するようサーバーに要求します。したがって、この場合、作成するリソースはセッションになります。したがって、おそらくURLは/ api / sessionsであり、セッションオブジェクト(ユーザー名またはパスワードとおそらくUUIDで構成されるオブジェクト)を使用してそのURLにPOSTするとセッションが作成されます。真のRESTでは、おそらく/ api / sessions / {UUID}で新しいセッションを指すでしょうが、実際には(そしてセキュリティの目的で)おそらくセッションCookieを登録するだけです。

ログインフォームを自分で実装する場合、これは私自身の個人的なアプローチですが、私は常にその仕事にSpringセキュリティを使用する傾向があるため、この要件はあまり考慮されません。

于 2012-10-15T09:40:48.480 に答える
1

私は似たようなことに取り組んでおり、これが私がこれまでに取った解決策です。どんな提案も歓迎します:)

私はusers、シングルとアカウントの変更専用です。

  • GET /users/{id}たとえば、プロファイルページのユーザーを取得します
  • PUT /usersユーザー名とパスワードを使用して新しいユーザーを作成します。実際には、これはGETメソッドでサインアップを確認する場所へのリンクを含む電子メールを送信する必要があります。
  • POST /users/{id}ユーザーを変更します(たとえば、パスワードの変更)
  • DELETE /users/{id}

認証の場合、私が要求するリソースはトークンまたは認証であると考える傾向があります。「セッション」という言葉は、RESTに反するはずなので避けようとしましたが、クライアントの実際のサーバー側セッションのような錯覚を作成するだけであれば、問題ないと思います。

  • PUT /authentication/usename / passwordを使用すると、user_id/ハッシュ値のペアを使用してSet-Cookieが返されます。多分それはPOSTでなければなりません。わからない
  • DELETE /authentication/{user_id}Cookieを削除するだけで、ユーザーはサインアウトします。多分それの代わりにuser_idユニークでなければなりませんtoken_id
于 2012-10-23T10:10:50.333 に答える
0

リソースは、RESTfulアプローチを使用して作成、読み取り、更新、および削除できます。例: https ://cwiki.apache.org/S2PLUGINS/restful-crud-for-html-methods.html

したがって、ユーザーを管理したい場合は、これが安らかなアプローチになります。

管理データセットにあるユーザーを認証する場合は、RESTful認証メカニズムを設計または選択する必要があります。例 :http: //de.slideshare.net/sullis/oauth-and-rest-web-services http ://www.thebuzzmedia.com/designing-a-secure-rest-api-without-oauth-authentication/

これらの問題のジャンプスタートについては、dropwizardをチェックしてください:http: //dropwizard.codahale.com/

于 2012-10-15T09:27:48.783 に答える
-2

リソースには1つまたは複数のURIが含まれる場合がありますが、1つのURIには正確に1つのリソースが含まれます

したがって、ユーザーを認証するときは、すでに登録されているユーザーをアドレス指定します。登録するときは、まだ登録されていないユーザー(リソース)をアドレス指定します。

必要なのは、サーバーに処理する方法だけです。

これは、SUGARCRMRESTWebサービスの実装から抜粋した例です。RESTは、サーバーへのhttpリクエストのようなものです。

たとえば、RESTWebサービスを実装する場合。すべてのRESTリクエストは同じファイルに送信されます

www.your_domain.com/Rest.php?json={your_json_method:'method',params:'watever'}

Jsonのどこに、パラメーターとして送信するリクエストがありますか

ユーザーの認証を {method:'SignUp', username:'abc', pass:'pass', confirm_pass:'pass'} 要求するユーザーの登録を要求する {method:'Login', username:'abc', pass:'pass'}

このようにして、必要な数のパラメータを持つことができます

JSONを使用する必要はないことを忘れないでください。クエリに単純なgetparamsを使用できます

于 2012-10-15T05:15:44.637 に答える