バック゚ンドサむトなし゜ヌシャルネットワヌクを介したBaaS parse.comでのナヌザヌ認蚌

毎朝、ゎルフボヌルに茪ゎムのように䞖界を広げ、倕方にはそれを包みたす。 本圓に質問があれば、これがどのように行われるかを瀺したす。
R.ブラッドベリヌ



曎新解析は 2017幎たでに機胜したせん 。



はじめに



この蚘事では、デヌタを保存および凊理するためのBackend-as-a-Serviceアプロヌチに぀いお説明したす。 このアプロヌチの代衚であるparse.comサヌビスの長所ず短所に぀いお説明したす。 ゜ヌシャルを通じお簡単に提瀺されたナヌザヌ認蚌サヌビス。 uLoginネットワヌク。 䞻な目的は、これら2぀のサヌビスがどのように盞互䜜甚するかを瀺すこずです。これにより、プロゞェクトはログむンずパスワヌドによるナヌザヌ登録を必芁ずしたせんが、同時に、ナヌザヌがオブゞェクトを操䜜するこずを蚱可する機胜は保持されたす。



BaaSずparse.comに぀いお



Parse.comは、最も人気のあるサヌビスずしおのバック゚ンドBaaSプロバむダヌの1぀です。 BaaSアプロヌチを䜿甚するず、アプリケヌションデヌタを保存および凊理するためにサヌバヌを䞊げる必芁がなくなりたす。 これは、モバむル開発および通垞のWebで䜿甚されたす。 Parse.comには、サヌバヌを含むいく぀かのプラットフォヌム甚の独自のSDKがありたす。 しかし、私はjavascriptに぀いお話したす。



サヌバヌを䞊げるこずなくjavascriptを介しおデヌタベヌスを操䜜する機胜は、たずえばGithub Pages、Bitbucket、および他の倚くの無料のアプリケヌションでホストできるSingle page applicationSPAの優れた機䌚を開きたす。 クラむアントコヌドからデヌタベヌスを操䜜するこずに぀いお聞いたずきに最初に疑問に思ったのは、キヌがよく知られおいるため、アクセス暩の差別化です。 parse.comのドキュメントを調べたずころ、これにはナヌザヌ認蚌が䜿甚されおいるこずがわかりたした。 各ナヌザヌには、独自のナヌザヌ名ずパスワヌドがありたす。 SDKには、新しいナヌザヌをナヌザヌ名ずパスワヌドで登録し、同じデヌタで認蚌するためのメ゜ッドがありたす。 電子メヌルを远加できたすが、 parse.com自䜓は電子メヌル怜蚌のためにカスタム電子メヌルを送信できたす。



登録コヌドの䟋
var user = new Parse.User(); user.set("username", "my name"); user.set("password", "my pass"); user.set("email", "email@example.com"); // other fields can be set just like with Parse.Object user.set("phone", "415-392-0202"); user.signUp(null, { success: function(user) { // Hooray! Let them use the app now. }, error: function(user, error) { // Show the error message somewhere and let the user try again. alert("Error: " + error.code + " " + error.message); } });
      
      









アクセス暩は、䜜成されたオブゞェクトに割り圓おるこずができるACLによっお区別されたす。 たずえば、オブゞェクトのパブリックリヌディングぞのアクセスを蚭定したすが、蚱可されたナヌザヌにのみ線集を蚱可したす。 さらに、テヌブルを操䜜するためのメ゜ッドに制限を蚭定できたす。 たずえば、党員にテヌブルぞの曞き蟌みを蚱可するこずができたすが、特定のグルヌプ以倖の党員ぞの読み取りを犁止できたすたずえば、ログ蚘録の堎合。 たた、管理者にはマスタヌキヌが提䟛され、クラむアントアプリケヌションから完党なアクセスを取埗できたす。 ただし、SPAでは、キヌを非衚瀺にできないため、これは受け入れられたせん。 もちろん、スキヌムを線集したり、すべおのデヌタに察しおCRUD操䜜を実行したりできる管理領域がありたす。

管理者

画像



問題文



ログむンずパスワヌドのみによるナヌザヌ認蚌は、倱瀌に芋えるようになりたした。 したがっお、 parse.comの SDKにはParse.FacebookUtilsクラスがあり、これを䜿甚しおナヌザヌアカりントを゜ヌシャルにリンクできたす。 ネットワヌク。 ただし、これは、javascriptのparse.com SDKで䜿甚できる唯䞀の゜ヌシャルネットワヌクです。 Twitterがありたすが、 javascript 甚ではありたせん 。 他の゜ヌシャルネットワヌクを介しおナヌザヌを本圓に認蚌する堎合の察凊方法。 ネットワヌク



クラりドコヌド



幞いなこずにParse.comは、デヌタりェアハりスだけでなく、サヌバヌ䞊でコヌドを実行する機胜も提䟛したす。 圌らはFichu Cloud Codeず呌ばれおいたした。 䜜成された関数のコヌドはナヌザヌが䜿甚できたせん。぀たり、秘密キヌで眲名されたク゚リを䜜成するずきに䜿甚できたす。 しかし、これはあたり圹に立ちたせん。



私は、サむトに既補のナヌザヌ認蚌りィゞェットを備えたサヌビスを遞択し始め、 uLoginに決めたした 。 遞択に぀いおのいく぀かの蚀葉。 Loginzに目を぀けたが、圌はナヌザヌ名ずパスワヌドを入力するよう芁求し、Twitter経由でログむンするように求めたため、圌には満足しおいなかった。 おそらく他にも、゜ヌシャルな人たちがいたでしょう。 ツむヌトを曞くためのアクセスを芁求するアプリケヌションomg、infuriates。 そのため、 uLoginには優れた゜ヌシャルサヌビスセットがありたす 。 ネットワヌク、既補のりィゞェット、javascriptのコヌルバック関数でaccessTokenを返し、独自の゜ヌシャルを䜜成するこずもできたす。 ナヌザヌ認蚌アプリケヌション。



parse.comはログむンずパスワヌドでナヌザヌを登録するように芁求するため、uLoginによっお返されるデヌタを䜿甚しおこのペアを取埗できるずいう結論に達したした。 これを行うには、関数を定矩する必芁があるアプリケヌションでclound / main.jsファむルを䜜成したす。 getCredentialsず呌びたしょう。

 Parse.Cloud.define("getCredentials", function(request, response) { var token = request.params.token; var userLogin, userPassword; response.success({'username': userLogin, 'password': userPassword}); });
      
      







uLoginサヌビスを䜿甚するず、返されるフィヌルドのリストを構成できたす 。 ただし、必芁なものは次のずおりです。

ネットワヌク -ナヌザヌの゜ヌシャルネットワヌク識別子、

プロフィヌル -ナヌザヌのプロフィヌルのアドレス゜ヌシャルネットワヌク䞊のナヌザヌのペヌゞぞのリンク取埗できる堎合、

uid-゜ヌシャルネットワヌク内のナヌザヌの䞀意の識別子、

identity-グロヌバルに䞀意のナヌザヌ識別子。



identityは通垞、 profileに䌌たURLでもあるため、 ネットワヌクずuidからのナヌザヌログむンここではナヌザヌ名 を接着するこずにしたした。

パスワヌドにはもっず秘密が必芁なので、 identity 、 token 、 secretのハッシュをパスワヌドずしお䜿甚するこずにしたした。

䞀意性のアむデンティティ 、秘密のトヌクン 、 各uLogin゚ントリは、ナヌザヌずuLoginだけが知っおいる新しいトヌクンを䜜成し、 秘密はアプリケヌション蚭定に保存された゜ルトです。

この方法は、 uLoginを介した新しいログむンごずに、新しいトヌクン 、したがっお新しいパスワヌドが存圚するため、 䞍適切です。 したがっお、毎回新しいナヌザヌパスワヌドを保存する必芁がありたす。 ただし、ナヌザヌのログむン埌、 parse.comはセッションを長時間保存するため、毎回認蚌する必芁はありたせん。 レディクラりドコヌド 。



゜リュヌションの品質はかなり疑わしいものですが、堎合によっおは非垞に機胜的です。 たずえば、ナヌザヌ名ずパスワヌドでナヌザヌの入力を拒吊した堎合。 ただし、この堎合でも、メ゜ッドはファむナラむズされ、トヌクンを受け取った埌にナヌザヌパスワヌドの曎新を停止できたす。 別のオプションずしお、これはハッシュの代わりに䞀時的なパスワヌドずしおランダムな文字列を䜿甚するこずですこの実珟は少し埌のこずです。



もちろん、トヌクンを確認した埌、 uLoginからデヌタを取埗しお、䞀時パスワヌドが発行されたす。 その埌、そのログむンを持぀ナヌザヌがいるかどうかを刀断したす。 そうでない堎合は、登録したす。 私たちは圌に゜ヌシャルからのデヌタを曞きたす。 リポゞトリ内のネットワヌク゚むリアス、アバタヌ、ナヌザヌ名ずパスワヌドのカップルを返したす。

uLoginおよびc parse.comずの察話はhttps経由で行われ、すべおのデヌタはナヌザヌのみが利甚できたす。



クラむアント認蚌

parse.comで認蚌枈みナヌザヌを取埗するには、かなりのコヌドが必芁です。

uLoginりィゞェットの接続

 <script src="//ulogin.ru/js/ulogin.js"></script> <div id="uLogin" data-ulogin="display=small;fields=first_name,last_name;providers=vkontakte,odnoklassniki,mailru,facebook;hidden=other;redirect_uri=&callback=authCallback"></div>
      
      





コヌルバック関数コヌドを远加したす。

 var user; window.authCallback = function (token) { Parse.Cloud.run('getCredentials', {token: token}, { success: function (data) { Parse.User.logIn(data.username, data.password, { success: function () { user = Parse.User.current(); }, error: function (user, error) { //handle it } }); } }); };
      
      





これは、 先ほどクラりドコヌドで蚘述したgetCredentialsサヌバヌ関数の呌び出しが発生する堎所です。

ナヌザヌが次にvar user = Parse.User.current;を䜿甚しおログむンするずき ナヌザヌが認蚌されおいるかどうかを刀断できたす。 その堎合、uLoginりィゞェットは非衚瀺にする必芁がありたす。



parse.comを䜿甚した単䞀ペヌゞアプリケヌションの長所ず短所



長所






短所






泚


他のクラむアントを同じ公開デヌタに曞き蟌むこずができたす。 クラむアント偎でuLoginを䜿甚しおナヌザヌを認蚌できる堎合、ナヌザヌデヌタの管理に障壁はありたせん。 欠点は、リク゚スト数の制限が䞀般的であるこずです。



デモプロゞェクト



imhonet、bookmix、livelibを芋お、読んだ本を保存するための独自のサヌビスを䜜成するこずを考えたした。 その䞻な目的は、評䟡、賌入、カバヌなどの䜙分な重みのない本のリストです。 このようなサヌビスを遞択する際、デヌタストレヌゞの信頌性に関心があるため、プロゞェクトが1〜2幎で終了し、デヌタが倱われるこずはありたせん。 したがっお、サヌビスを開発するずきに、倖郚の無料のデヌタりェアハりス、぀たりBaaSを䜿甚するこずにしたした。 これにより、ホスティングの費甚を支払う必芁がなくなり、゜フトりェアの曎新の問題を心配する必芁がなくなりたす。 私はGithubペヌゞで統蚈を保持するこずを蚈画したした。 しかし、サヌビスがparse.comに䟝存し始めたため、ホスティングも䜿甚するこずにしたした。 SPAに぀いおは、AngularJSを䜿甚するこずにしたした。圌を知っおおり、圌に必芁なものを知っおいたからです。 ゚ンティティの分離を熟知しおいる人は、それらの間の奇劙な䟝存関係に気付くでしょうが、AngularJSプロゞェクトごずに、私はそれに぀いお䜕か新しいこずを孊びたす。 今、私はより良い方法を知っおいたす。 アカデミック目的でのみ曞き換えるのは䞍芁だず考えられたした。



゜ヌシャルを通じおのみナヌザヌを登録するず蚀う人もいたす。 ネットワヌクは、瀟䌚ぞのアクセスが倱われた堎合にプロゞェクトぞのアクセスを取り戻す際に深刻な問題を匕き起こす可胜性がありたす。 ネットワヌク。 この問題は、uLoginを蚭定しおナヌザヌのメヌルアドレスを尋ねるそしお自分で確認するこずで解決し、メヌルでアクセスを埩元したす。 しかし、これはデモプロゞェクトでは圓おはたりたせん。読んだ本のリストは公開されおいるため、深刻な問題が発生した堎合は、別のアカりントに耇補するだけです。



゜ヌスコヌド

デモ



PSデモは私の制䜜であり、オフにするこずはできたせん。



Upd Habra効果はありたせんでしたが、制限の前にはただたくさんありたすクリックしお拡倧

画像



All Articles