c# - 管理员通过部门查看文档

标签 c# mysql asp.net sql stored-procedures

管理员,即约翰在注册时链接到人力资源部门,然后选择人力资源部门,他的数据存储在userss表中,在此表中,id设置为dep id =2,即dep2。

然后我希望当他通过登录 ID 和密码登录时,他只能访问 HR 文档,而不能访问其他文档,例如财务、计算机科学、营销,我已经尝试过此查询。

首先我选择 dep id:

ALTER procedure [dbo].[sphrdoc]
@UserName  nvarchar(50),
@Password nvarchar(50)
as
select DepID from Userss where UserName=@UserName AND [Password]=@Password

然后我创建一个函数:

publicint  hrdoc(string Username,string password)
    {
        return Convert.ToInt32( db.ExecuteScalar("sphrdoc",newobject[]  
       {Username,password}));

    }

然后在页面加载中:

Session["a"] = dd.hrdoc(Convert.ToString(Session["Login2"]),   
(Convert.ToString(Session["Login3"])));

然后我设置了这个查询:

ALTER procedure [dbo].[sphrdocid1]
 @DepID int
as
 SELECT DocumentInfo.DocID,
 dbo.DocumentInfo.DocName,
dbo.DocumentInfo.Uploadfile,
dbo.DocType.DocType,
 dbo.Department.DepType ,
dbo.ApproveType.ApproveType AS ApproveID
FROM dbo.DocumentInfo
left JOIN dbo.DocType ON dbo.DocumentInfo.DocTypeID=dbo.DocType.DocTypeID
left JOIN dbo.Department ON dbo.DocumentInfo.DepID=dbo.Department.DepID
LEFT JOIN dbo.ApproveType ON dbo.ApproveType.approveid=dbo.Department.DepID where   
dbo.Department.DepID=@DepID


public DataTable hrdoc1(int id)
    {           
        DataTable table = db.ExecuteDataSet("sphrdocid1", new object[] { id 
       }).Tables[0];
        return table;

    }

然后在页面加载中我称之为:

GrdFileApprove.DataSource = dd.hrdoc1(Convert.ToInt32(Session["a"]));
          GrdFileApprove.DataBind();

但是当 John 登录时,他仍然可以看到与人力资源、营销、财务、计算机科学相关的所有文档。

最佳答案

您的查询看起来正确。您需要检查数据以确保所有值均正确填充。

这是您正在使用的实际代码吗?您需要在 Department 表上进行左连接吗?

exec sphrdocid1 @DepID = 1

go
ALTER procedure [dbo].[sphrdocid1]
 @DepID int
as
begin
SELECT DocumentInfo.DocID, dbo.DocumentInfo.DocName, dbo.DocumentInfo.Uploadfile, dbo.DocType.DocType, dbo.Department.DepType , dbo.ApproveType.ApproveType AS ApproveID
FROM dbo.DocumentInfo
JOIN dbo.Department
    ON dbo.DocumentInfo.DepID=dbo.Department.DepID
left JOIN dbo.DocType 
    ON dbo.DocumentInfo.DocTypeID=dbo.DocType.DocTypeID
LEFT JOIN dbo.ApproveType 
    ON dbo.ApproveType.approveid=dbo.Department.DepID 
where  dbo.DocumentInfo.DepID=@DepID
end

关于c# - 管理员通过部门查看文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19597503/

相关文章:

c# mysqlDb 连接在单独的类中

C# - 通用操作?

c# - Web 服务器通过 HTTP 发送图片

php - slug 的伪哈希索引

asp.net - 如何将 ASP.Net 表单例份验证 loginUrl 全局化为多种语言?

c# - 如何使用 XAML 将事件绑定(bind)到成员字段或属性的事件处理程序?

php - 不确定如何让 mod_rewrite 写入某种格式

mysql - 根据组内的最小日期更新表

asp.net - 为什么 HttpContext.Current.Session 在 HttpModule 中可用,而在 Response.Filter 中不可用?

asp.net - 从 IFrame 打印页面时,为什么我会看到不同的字体大小?