Я пытаюсь найти простой пример аутентификации пользователей с помощью Dart. Пока что ближайший я нашел https://github.com/dart-lang/bleeding_edge/blob/master/dart/tests/standalone/io/http_auth_test.dart. Может ли кто-нибудь направить или предоставить мне рабочий пример аутентификации на стороне сервера, используя Dart. Заранее спасибо.Dart login/logout example
ответ
Аутентификация - это обширная тема, и вы не указали многое, чего хотите достичь, но позвольте мне направить вас на создание аутентификации Facebook для вас, приложение Dart, потому что я думаю, что это самый простой способ начать. Зачем? Потому что нам не нужно говорить о каждой возможной базе данных, которую вы могли бы использовать, или о том, как вы настраиваете структуру базы данных, модели и т. Д., И как вы справляетесь с безопасностью (генерируете токены и т. Д.).
С помощью этих знаний вы сможете реализовать другие сервисные аутентификации (Google+, Twitter) и, в конечном счете, свои собственные, если хотите.
Итак, зарегистрируйтесь на Facebook apps page нажав Создать новое приложение. Вы должны получить эту страницу:
(Обязательно для заполнения как домен приложения и URL сайта)
Затем указать какой файл конфигурации где-то (например config.dart
), что вы будете импортировать везде вам нужно:
var config = {
'authentication': {
'facebook': {
'appId': '...',
'appSecret': '...',
'url': 'http://test.com/login/facebook'
}
},
};
Тогда вам нужно создать ссылку где-нибудь. Если вы используете веб-интерфейс, ваш Dart сценарий может первым импортировать конфигурационный файл и создать логин URL:
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';
}
Теперь на вашем HTML можно указать ссылку:
<a href="{{ loginLinkUrl }}">Login with Facebook</a>
На данный момент, возможно, прочитать руководства для разработчиков Facebook: https://developers.facebook.com/docs/reference/dialogs/oauth/
Диалоговое окно входа в Facebook будет вызывать пользователя по адресу, указанному в config (/login/facebook
), тогда наше приложение должно ответить на него. Я позволяю вам обрабатывать маршрутизации, как все вы хотите, но, по существу сервер, когда он получает /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 профиль разработчика и приложения с соответствующими URL.
- Запишите идентификаторы приложения и т. Д. В некоторой конфигурации.
- Создайте правильную ссылку для входа.
- Напишите код на стороне сервера, на котором пользователи Facebook находят пользователей.
- Напишите несколько вызовов API на сервере для получения аутентифицированного пользователя.
Удачи!
Я написал 3 part Tutorial about the login/authorization with Dart с использованием функции безопасности Rikulo.
Войти с классом безопасности прямолинейно. Во всяком случае, стандартный пример нуждается в некоторых изменениях, соответствующих вашим конкретным требованиям, особенно маршрутизации/перенаправления после действий.
Кроме того, учебное пособие включает фиктивный вход пользователя, который, очевидно, не является вариантом для производства. Таким образом, вам необходимо @Override стандартную функцию для входа в систему из Rikulo путем создания собственного Authenticator
class _Authenticator extends Authenticator {
@override
Future login(HttpConnect connect, String username, String password) {...};
}
Затем идти вперед и говорить с вашим сервером и возвращать либо объект пользователя на успешной регистрации или ошибки на провал!
Надеюсь, это вам поможет!
Последний бой в Rikulo github был сделан 23 февраля 2014 года. Проект мертв? – expert
- 1. change href = "example" to href = "/ example"
- 2. Activity.onProvideAssistContent() example
- 3. CFNetServiceCallBack example
- 4. PyArray_SimpleNewFromData example
- 5. gobject.timeout_add example
- 6. s7graphview example
- 7. ExpandableList example
- 8. MapReduce example
- 9. Lambda Example
- 10. Angularjstable example
- 11. Dart without Dart-Editor: Refreshing
- 12. Dart Web_Audio for Dart 1.6
- 13. Экспорт Dart API на JavaScript без Dart VM
- 14. Заменить "dir/23-example-example /" to "dir/index.php? Id = 23"
- 15. изменить значение в combobox ["example"] на "example" в javafx
- 16. jquery php json example
- 17. Cassandra Java query example
- 18. Jackrabbit FirstHop example java.lang.NoClassDefFoundError
- 19. Понимание перегруженного оператора [] example
- 20. ringojs fileupload example
- 21. UIManagedDocument example/tutorial
- 22. Shell sort Java example
- 23. Pre save example
- 24. socket.io chat example heroku
- 25. Javascript Variable hoisting example
- 26. simple C# regex example
- 27. Spring @autowired annotation example
- 28. Bootstrap bs-example
- 29. restkit json example
- 30. java example in swt
Кай, не могли бы вы сделать образец и сообщение на github с помощью readme.md? Это будет отличная выборка. –