2010-10-17 3 views
2

Для моего приложения ASP.NET MVC я просто усложнил работу с уникальными идентификаторами, поэтому я добавил свое собственное поле в таблицу ASPNET_USERS - UserIdInt (что на самом деле является bigint!). Поэтому большинство пользовательских операций использует userIdInt в качестве ссылки.asp.net mvc - поставщик членства

Во всяком случае, я обсуждал между двумя подходами:

1) Когда пользователь входит в системе, посмотреть из базы данных и хранить userIdInt в переменном сеансе и любое время переменной сеансы ускользает, повторный взгляд его верните и верните в переменную сессии. (Можно ли использовать сеансы в приложении MVC?)

2) Каждый раз, когда нужно выполнить операцию, просто передайте имя пользователя в базу данных и позаботьтесь о UserIdInt со стороны базы данных, выполнив объединения и т. Д. В таблице ASPNET_Users необходимо выполнить операцию от пользователя.

Я сильно наклоняюсь к 1) ... но я хочу убедиться, что я на правильном пути.

Сначала я задал этот вопрос на Serverfault, но мне сказали задать этот вопрос здесь.

ответ

1

progtick,

может быть гораздо лучше, глядя на использование настраиваемых поставщиков профилей, так как это позволит вам оставить aspnet_ * таблицы, как это (который является хорошей идеей в случае более поздней версии изменений SQLSERVER как они работают) плюс предложить дополнительную возможность иметь множество дополнительных свойств, связанных с профилем, доступными вашему приложению. я не могу преувеличивать достаточные преимущества в том, чтобы спустить этот трек, поскольку я счел очень полезным иметь такой подход как в моих стандартных приложениях asp.net, так и в моих mvc-темах.

вы можете получить чувство для того, что участие в этом, посмотрев беспересадочный пару из этих ссылок: вот один на SO для стартеров:

Implementing Profile Provider in ASP.NET MVC

и один из моего старого товарища, Ли Дюмон:

http://leedumond.com/blog/asp-net-profiles-in-web-application-projects/

надеюсь, что это помогает

+0

спасибо, что нашли время, чтобы опубликовать ссылки, но он не совсем отвечает на мой вопрос (или я не могу его увидеть). Я применил свой пользовательский профиль-провайдер, используя несколько иной подход. Единственный способ, которым я коснулся таблицы aspnet, - добавить столбец userIdInt в таблицу aspnet_user. Никаких других изменений! – TPR

0

An альтернативный подход заключается в изменении билета проверки подлинности форм, чтобы добавить ваш уникальный идентификатор к данным, хранящимся в файле cookie. Затем, реализуя пользовательский IPrincipal, вы можете иметь свой уникальный идентификатор в любом месте, где доступен объект User.

+0

ах, получил какой-нибудь пример в Интернете? Это легко сделать неправильно. – TPR

+0

Это довольно хороший пример: http://blog.codevelop.dk/post/2007/11/24/ASPNET-20-Forms-authentication-Keeping-it-customized-yet-simple.aspx – Clicktricity

Смежные вопросы