Algo realmente confuso sobre como papéis e tabelas de associação estabelecer uma relação

votos
1


Eu sei como criar usuários e atribuir-lhes papéis etc, mas quando tentei cavar um pouco mais sobre como papéis e tabelas de associação são capazes de estabelecer uma relação entre um ao outro, eu tenho totalmente perdido (BTW - Eu sei como estrangeira / chaves primárias trabalhar;))

BTW - Eu criei tabelas em bancos de dados usando o assistente aspnet_sqlreg


Q1 - Ambos SqlRolesProvider e SqlMemebershipProvider tem uma propriedade ApplicationName . Eu pensei que para os dois provedores para ser capaz de criar associação entre seus usuários e funções, eles ambos têm de usar mesmo valor para ApplicationName propriedade. Mas isso não parece ser o caso.

A) De qualquer forma, presumo que SqlRolesProvider.ApplicationName propriedade só é usado para distinguir entre entradas da tabela pertencentes a diferentes provedores de função, mas eles não usam essa propriedade, a fim de associar suas funções somente com provedores de associação com o mesmo ApplicationName valor ?!

B) Mas não seria mais prático se os provedores de papéis só poderia ser associada com provedores de associação com o mesmo ApplicationName valor (assim que SqlRolesProvider.ApplicationName == SqlMemebershipProvider.ApplicationName) ?!



Q2 - Eu também estava curiosa se os papéis e os usuários poderiam ser associado se provedor de papéis foi conectado a DB1 , enquanto provedor de associação estava ligado a DB2 . De alguma forma eu ainda era capaz de atribuir usuários a funções diferentes, embora os papéis foram definidos no banco de dados diferente.


A) Mas por que isso? Ou seja, se SqlRolesProvider.ApplicationName = “rolesP” ( ApplicationID = 10 ) e SqlMembershipProvider.ApplicationName = “associação” ( ApplicationID = 100 ), em seguida, em ordem para a tabela no DB1 ter relação com a tabela no DB2 , os dois teriam de referência um ao outro através de ApplicationName entrada (na verdade através ApplicationID), que agiria como chave estrangeira / primário.

Mas a coisa é, nenhum dos campos de chave estrangeira no do DB1 mesas tem um valor igual a SqlMembershipProvider.ApplicationID = 100 , o que sugere que não há nenhuma relação estabelecida entre tabelas em DB1 e DB2 (eu sei que não é o caso, uma vez que Eu sou capaz de atribuir usuários a funções). Então, o que eu estou ausente?


thanx


EDITAR:

Uh, não sei se alguém ainda vai estar lendo isso, mas eu fiz mais algumas escavações e ficou ainda mais confuso:

Se ambos os papéis (com applicationName = R1 e applicationID = 10 ) e provedor de associação (com applicationName = M1 e com ApplicationID = 100 ) estão na mesma DB, em seguida, criar um novo usuário faz com que aspnet_Users mesa dois criar duas entradas para o mesmo usuário nome- um com ApplicationID = 10 e outro com ApplicationID = 100 . Tanto quanto eu sei, quando um novo usuário é criado, apenas um campo (com ApplicationID = 100 ) deve ser adicionado ao aspnet_Users. Uh ?!

Publicado 19/05/2009 em 21:24
fonte usuário
Em outras línguas...                            


2 respostas

votos
2

Você já olhou para a mesa aspnet_UsersInRoles. Esta é a mesa que liga o usuário à função. O RoleProvider é projetado para ser separado do MembershipProvider para que você possa tê-los em separado DB. Além disso, ele permite que você configure papéis por um nome do aplicativo e reutilizar esses papéis em dois aplicativos separados que cada um tem um nome de aplicativo diferente para o provedor de associação. Não ficar preso na mentalidade que você tem que ter o mesmo nome do aplicativo para ambos os provedores ou que seu nome do aplicativo precisa corresponder ao aplicativo em execução. Você não precisa ter qualquer nome em tudo se você não quer. Espero que isso ajude.

Respondeu 20/05/2009 em 00:24
fonte usuário

votos
1

Eu tive um tempo difícil seguir o que você estava dizendo ...

Enfim ... você parece estar a olhar para o banco de dados muito. você tiver configurado o web.config para seus provedores de associação e você foi capaz de consultar "Membership" usando C # e consultas não SQL?

Respondeu 19/05/2009 em 21:32
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more