2013-03-11 5 views
4

Я использую SimpleMembership, и я подключил его к моей таблице User, и все сработало нормально. Но когда я попытался изменить UserId от междунар к Guid, я получил сообщение об ошибке:ASP.net MVC SimpleMembership

Cannot convert type 'System.Guid' to 'int' 

Для этих строк кода:

WebSecurity.CreateUserAndAccount(model.Email, model.Password, 
new 
{ 
    Name = model.Name, 
    Surname = model.Surname, 
    Gender = model.Gender, 

} 
); 

В таблицах webpages_OAuthMembership и webpages_Membership я изменил UserId от int до uniqueidentifier (который представляет guid), но не помог.

Могу ли я иметь указатель для идентификатора пользователя, и если смогу, как? И если я не могу использовать guid, я могу использовать BIGINT?

+0

Я не верю, что это поддерживается (хотя я бы хотел, чтобы это было). Возможно, вы сможете реализовать свой собственный SimpleMembershipProvider, который принимает GUID. http://forums.asp.net/t/1856517.aspx/1?ASP+NET+MVC+4+Simple+Membership – ken

+0

В следующей статье показано, что Microsoft работает над решением, начиная с января 2013 года. Кто-нибудь есть все обходные пути? http://aspnet.uservoice.com/forums/41201-asp-net-mvc/suggestions/3573751-use-generic-types-for-userid-in-simple-membership- –

+1

Существует решение по ссылке, которую вы опубликовали, Erik Портер опубликовал его в комментариях;) Только другой вариант заключается в создании собственного провайдера. По крайней мере, это то, что я нашел до сих пор – hyperN

ответ

0

Идея SimpleMembershipProvider заключается в том, что ее очень легко реализовать, поскольку я обычно работаю прямо из коробки. Тем не менее, вы должны ладить со своей пользовательской таблицей. Если вы хотите использовать свою собственную таблицу пользователей и, возможно, некоторые самозащищенные шифрование/дешифрование паролей и т. Д., Вы должны создать CustomMembershipProvider. При этом вы можете настроить все, чтобы соответствовать существующей среде или базе данных.