我正在使用sql server,c#,asp.net。我正在做一个项目,根据用户的许可,从数据库中动态显示菜单。截至目前,这是我的存储过程,
Create Proc spGetMenuData
as
Begin
Select * from tblMenu1
End
我的数据库中有一个用户表,一个角色表和一个菜单表。 用户:userid,username,pass,roleid 角色:角色,名称(管理员,用户) 菜单:menuid,name,url,roleid,userid或menuid,name,url,roleid(请告诉我是否更合适) 现在,我想要的是让用户ID和他的角色检查菜单。我可以将userid存储到我的程序中的变量并将其传递给我的存储过程。 像:
Create Proc spGetMenuData
as
Begin
Select * from tblMenu1 //(WHERE tblMenu1.userid = useridfromthevariable and tblMenu1.roleid = useridfromthevariable's roleid)
End
请帮助我,我只是一个初学者。 提前谢谢!
答案 0 :(得分:1)
这是我要做的:
用户表:user_id,username,pass,role_id
角色表:role_id,role_name
Menu_Roles表:role_id,menu_id
菜单表:menu_id,name,url
然后,我将指定菜单属于某个角色,并具有属于用户的角色。
然后获取给定用户的menu_id,name和url:
CREATE PROCEDURE getMenus
@someUserName
AS
SET NOCOUNT ON;
SELECT menu_id, name, url FROM menus WHERE menu_id
IN (select menu_id from users
JOIN menu_roles ON users.role_id=menu_roles.role_id WHERE username=@someUserName)
GO