我正在嘗試使用Dart查找用戶身份驗證的簡單示例。到目前爲止,我發現最近的是https://github.com/dart-lang/bleeding_edge/blob/master/dart/tests/standalone/io/http_auth_test.dart。任何人都可以引導或提供給我一個使用Dart進行服務器端身份驗證的工作示例。提前致謝。Dart登錄/註銷示例
回答
認證是一個很大的話題,你沒有詳細說明你想實現的目標,但是讓我指導你爲你的Dart應用程序構建一個Facebook認證,因爲我認爲這是最簡單的一個開始。爲什麼?因爲我們不需要談論你可能使用的每個可能的數據庫,或者你如何設置你的數據庫結構,模型等,以及你如何處理安全性(生成令牌等)。
有了這些知識,您就可以實施其他服務認證(Google+,Twitter),並最終實現您自己的願望。
因此,首先,通過按創建新應用程序,在Facebook apps page上註冊應用程序。你應該得到這個頁面:
(請務必填寫這兩個應用程序域和網站URL)
然後某處指定一些配置文件(如config.dart
),您將導入無處不在,你需要:
var config = {
'authentication': {
'facebook': {
'appId': '...',
'appSecret': '...',
'url': 'http://test.com/login/facebook'
}
},
};
然後,你需要創建一個鏈接的地方。如果您正在使用的Web UI,你的飛鏢腳本可以先導入配置文件以及創建一個登錄網址:你的HTML
import 'config.dart';
main() {
var fbConfig = config['authentication']['facebook'];
var appId = fbConfig['appId'];
var url = fbConfig['url'];
var loginLinkUrl = 'https://www.facebook.com/dialog/oauth/?client_id=$appId&redirect_uri=$url&state=TEST_TOKEN&scope=email';
}
現在你指定的鏈接:
<a href="{{ loginLinkUrl }}">Login with Facebook</a>
在這一點上,也許讀Facebook開發人員指南:https://developers.facebook.com/docs/reference/dialogs/oauth/
Facebook登錄對話框會將用戶導向我們在config(/login/facebook
)中指定的URL,然後我們的應用程序需要對其進行響應。我讓你處理路由你想怎麼過,但基本上是在接收到/login/facebook
請求的服務器,它首先編碼的一些特性:
var code = uri.encodeUriComponent(request.queryParameters['code']);
var appId = uri.encodeUriComponent(config['authentication']['facebook']['appId']);
var appSecret = uri.encodeUriComponent(config['authentication']['facebook']['appSecret']);
var url = uri.encodeUriComponent(config['authentication']['facebook']['url']);
你需要import 'dart:uri' as uri
第一。
在此之後,一些代碼,做API請求給Facebook:
http.read('https://graph.facebook.com/oauth/access_token?client_id=$appId&redirect_uri=$url&client_secret=$appSecret&code=$code').then((contents) {
// "contents" looks like: access_token=USER_ACCESS_TOKEN&expires=NUMBER_OF_SECONDS_UNTIL_TOKEN_EXPIRES
var parameters = QueryString.parse('?$contents');
var accessToken = parameters['access_token'];
// Try to gather user info.
http.read('https://graph.facebook.com/me?access_token=$accessToken').then((contents) {
var user = JSON.parse(contents);
print(user); // Logged in as this user.
});
});
我在這裏使用HTTP包和QueryString包。
API請求後,您手頭上有用戶信息。現在,您可以執行將經過身份驗證的用戶存儲在會話中的操作。您可以使用例如HttpRequest.session
爲此目的。要註銷,只需從會話中刪除數據。
這大致是您需要做的步驟,以啓動Facebook身份驗證工作。您可以期待許多其他網站的類似工作流程。您可能還需要/使用OAuth2
軟件包。
所以總結:
- 創建的Facebook開發人員配置,用正確的網址的應用程序。
- 在某些配置中記下應用程序ID等。
- 創建正確的登錄鏈接。
- 將服務器端代碼寫入Facebook登錄引發用戶的位置。
- 在服務器中編寫一些API調用以檢索經過身份驗證的用戶。
玩得開心!
我寫了一個3 part Tutorial about the login/authorization with Dart使用Rikulo安全功能。
安全類的登錄很簡單。無論如何,標準示例需要進行一些更改以符合您的特定要求,特別是在執行操作之後的路由/重定向。
此外,本教程還包含一個虛擬用戶登錄,這顯然不適用於生產。因此,你需要創建自己的身份驗證,以@override從Rikulo登錄標準功能
class _Authenticator extends Authenticator {
@override
Future login(HttpConnect connect, String username, String password) {...};
}
然後繼續前進,與您的服務器發言,並在成功登錄或錯誤失敗返回一個用戶對象!
希望這可以幫助你!
Rikulo github最後一次提交是在2014年2月23日完成的。項目是否已經死了? – expert 2014-11-22 13:15:07
- 1. 登錄註銷春季安全用例
- 2. Silverstripe登錄/註銷
- 3. Django登錄/註銷
- 4. facebook登錄/註銷
- 5. Facebook登錄/註銷
- 6. 登錄註銷smarty
- 7. 顯示用戶名登錄註銷ASP
- 8. Maven Struts/JSP登錄註銷示例應用程序?
- 9. 登錄/註銷示例應用程序是Struts 2的問題
- 10. 登錄變更註銷在登錄時
- 11. 春季安全登錄/註銷登錄
- 12. 多個ssh登錄/註銷
- 13. VBA登錄和註銷Facebook
- 14. CVS登錄和註銷
- 15. 網站登錄和註銷
- 16. 攔截登錄/註銷ejabberd
- 17. 登錄前需要註銷
- 18. 使用AJAX登錄/註銷
- 19. 登錄和註銷揮杆
- 20. 登錄/註銷動態
- 21. 在asp.net登錄註銷
- 22. 登錄註銷控件
- 23. 使用UITabBarController登錄/註銷?
- 24. 註銷後登錄問題
- 25. Facebook登錄註銷實施
- 26. Wordpress登錄註銷菜單
- 27. Codeigniter登錄註銷按鈕
- 28. 登錄和註銷jsf
- 29. 登錄/註銷故障
- 30. 在EntLib中登錄/註銷
啓,你可以在github上做一個示例併發布readme.md嗎?這將是一個很好的例子。 – 2013-03-20 02:31:35