On Mon, 22 Jul 2002, Mete Kural wrote:
> Date: Mon, 22 Jul 2002 16:20:48 -0700 (PDT)
> From: Mete Kural <[EMAIL PROTECTED]>
> Reply-To: Tomcat Users List <[EMAIL PROTECTED]>
> To: [EMAIL PROTECTED]
> Subject: JDBCRealm Question
>
> Hello,
>
> My question is about how the user roles are
> deterermined in JDBCRealm. In the basic XML file
> configuration, the XML files has an element "roles".
> All of the user's roles are provided in this element
> as a comma-seperated list. It seems to me that in
> JDBCRealm, this is not the case. User_role column of
> the User_Roles table only stores one user role at a
> time. For instance if somebody has both the roles
> "user" and "admin", in the XML file this would be
> specified as "user, admin" inside the roles element.
> My understanding is that in JDBCRealm, you have to
> enter multiple records relating to the same user, i.e.
> username for each role that the user has. Is there a
> way to tweak JDBCRealm to read one comma-seperated
> list string from only one row instead of reading a row
> for each role that the user has.
>
You are correct about your reasoning that JDBCRealm wants a separate row
for each user+role combination. That is very typical of the result of
"normalizing" data structures for storage in a DBMS, so you will see this
design pattern a lot as you work with different database-based
applications.
In fact, many XML purists would frown on the fact that we didn't normalize
the data structure in the XML file by having nested <role> elements inside
each <user> element :-). But, given backwards compatibility requirements,
it's too late now.
> Why did I need this kind of functionality? Because I
> want to keep my user data including the user role all
> in one table and not deal with a seperate table for
> user_roles. Is what I want possible? Or do you have a
> suggestion on how to manage my user_roles data in the
> relational database?
>
You would seem to have the following choices:
* Bite the bullet and maintain a user_roles table as well. (Even
if you avoid learning how to deal with master/detail relationships
for this app, you're definitely going to need to understand how
to do this for other situations).
* Make a stored procedure (if your database supports them) that
automatically updates the user_roles table whenever you
update the user table. That way, your administrative program
doesn't need to worry about it, and JDBCRealm still gets what it needs.
* Make your own custom version of JDBCRealm that knows about
a single comma-delmited column, and maintain it yourself.
There is nothing in the standard version that does this.
> Thanks,
> Mete Kural
>
Craig
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>