Попробуйте приведенный ниже блок кода, он отлично сработал.
SWIFT 3.0
let ACCEPTABLE_CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_"
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let cs = NSCharacterSet(charactersIn: ACCEPTABLE_CHARACTERS).inverted
let filtered = string.components(separatedBy: cs).joined(separator: "")
return (string == filtered)
}
Цель C
#define ACCEPTABLE_CHARACTERS @" ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_."
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:ACCEPTABLE_CHARACTERS] invertedSet];
NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];
return [string isEqualToString:filtered];
}
Надеюсь, это будет работать и для вас.
API членства, который определяет ASP.NET, совершенно не подходит для OpenID, который вероятно, поэтому вы не видите, что многие системы используют его. Я не Пока не видел необходимости использовать поставщика членства с OpenID, так что это не стало проблемой. Одним из проектов, в котором была предпринята попытка согласовать модель поставщика членства с OpenID, является http://code.google.com/p/dotnet-membership-provider/ , но похоже, что он не поддерживался в последнее время. .
Как сказал womp, вам не нужно переделывать FormsAuthenticationModule. Он отлично работает с OpenID.
Ознакомьтесь с шаблонами проектов , которые поставляются с DotNetOpenAuth , чтобы узнать, как все может работать без поставщика членства.
но не похоже, что он поддерживался в последнее время.Как сказал womp, вам не нужно переделывать FormsAuthenticationModule. Он отлично работает с OpenID.
Ознакомьтесь с шаблонами проектов , которые поставляются с DotNetOpenAuth , чтобы узнать, как все может работать без поставщика членства.
но не похоже, что он поддерживался в последнее время.Как сказал womp, вам не нужно переделывать FormsAuthenticationModule. Он отлично работает с OpenID.
Ознакомьтесь с шаблонами проектов , которые поставляются с DotNetOpenAuth , чтобы узнать, как все может работать без поставщика членства.
Пример ASP.NET MVC, включенный в DotNetOpenId , использует FormsAuthentication для входа пользователя в систему после его аутентификации с помощью OpenID. Насколько я могу судить, он не интегрируется с системой членства.
Возможно, вы ищете проект OpenID Membership Provider .
И даже если вы не используете элементы управления входом, все же рекомендуется использовать модель поставщика членства для аутентификации.
Обычно нет необходимости углубляться в реализацию конкретных функций FormsAuthentication, поскольку написание MembershipProvider довольно тривиально. , и я никогда не встречал случая, когда он был бы недостаточно гибким для обработки. Обратите внимание, что часто вам нужно реализовать только один метод (ValidateUser ()) интерфейса, чтобы получить работающего поставщика.
Если кто-нибудь встретит хороший пример C # janrain - дайте мне знать.
У меня есть dsn, указывающий на tumblr, затем для виджета входа он возвращается в поддомен, где у меня есть его путь к папке в корне.
Итак, у меня есть папка app_code, в которой я использую этот вспомогательный класс C # - я могу получить обратно токен, и он приведет меня на мой members.domain.com, так что виджет работает - просто нужно получить сведения о пользователе о провайдере, которого они использовали для доступа в личный кабинет.
http://groups.google.com/group/rpx-developers/web/c-helper-class?_done=/group/rpx-developers%3F
- это вспомогательный класс
ошибка
Ошибка сервера в приложении. Неожиданная ошибка API Описание: необработанное исключение произошло во время выполнения текущего веб-запроса. Просмотрите трассировку стека для получения дополнительных сведений об ошибке и ее происхождении в коде.
Сведения об исключении: System.Exception: непредвиденная ошибка API
Ошибка источника:
Строка 22: Строка 23: Rpx feedit = new Rpx ("apikey", " https://learnbarpting.rpxnow.com/ "); Строка 24: feedit.AuthInfo (justoken); Строка 25: XmlElement xmlstuff = feedit.AuthInfo (justoken); Строка 26:
Исходный файл: c: \ Inetpub \ vhosts \ learnbarnding.com \ httpdocs \ members \ Default.aspx.cs Строка: 24
Трассировка стека: