Asp.net 权限管理系统 根据Ad域用户信息 做页面访问控制

asia_zy 2014-08-04 04:45:08
想实现这样一个功能,当前用户为AD域用户,在访问系统时候,自动进入相应权限的页面,谁能提供点思路?

ps:1.系统不需要通过form表单输入验证信息就能访问对应权限的页面,这是选择AD域用户登陆的原因之一
2.系统不想维护user 表 是选AD域用户登陆的第二点
3.系统流程中的审批是通过AD用户的职位做判断的,比如:AD域用户 a 提交了申请,那么此申请将通过获取a用户的信息获取它上一级用户信息,然后由它的上一级进行审批,整个过程都是通过AD域里面的用户信息进行
...全文
431 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
宝_爸 2014-08-05
  • 打赏
  • 举报
回复
How To: Use Windows Authentication in ASP.NET 2.0 http://msdn.microsoft.com/en-us/library/ff647405.aspx
还想懒够 2014-08-05
  • 打赏
  • 举报
回复
引用 5 楼 u010670806 的回复:
[quote=引用 4 楼 jjkk168 的回复:] AD仅作身份验证,但后台再加一个同步AD的数据信息到数据表的一个功能,毕竟一套系统中,AD能提供的信息还非常少,并且还受限于AD的管理,因此如果需要去取审批关系等信息,还是直接进入数据表去获取。另外,我们曾经维护过一套系统,这套系统过分地去读取AD的信息,甚至有着将域控读死机的案例。因此同步至数据表以后,维护方便、读取速度也快。
谢谢您的耐心回复,不过客户不想做用户维护,就想通过AD用户信息,直接进入系统。但是,系统菜单还要做不同职位的权限控制,比如说销售人员看到的菜单展示可能就和大区经理看到不一样…… 至于项目流程, 先是当前登陆用户填写申请并提交,右面就由他的上级职位人员去审批,听起来感觉不怎么难,难的是AD里面是否能提供所说的这些功能的可用信息……[/quote] 用户不愿意维护人事信息,这种情况在我做的项目中非常常见。但你需要进行一个前期的调研,确认对方的AD里面的信息完全支持审批链的关系,以及各个用户是否具有角色或职位的设置(你所说的不同的人员看到不同的菜单,这肯定是需要有一个职位或角色进行对应处理的,而这个信息对方是否存在?)如果满足,你就可以使用后台自动同步的方式(还是建议同步过来,而不是直接去读取域控的信息,举个例子,万一哪天对方要求进行用户名密码认证,那你的更改量是不是属于巨大级的?),如果不满足,那就先同步一部分,剩余的部分仍交给相应的管理人员去维护。我也做过完全同步的情况,但多少还是会存在一点问题的,比如说AD里面的汇报关系中设置的经理,不一定是审批链中的经理,如某个人是部门的行政助理,AD中有可能设置给行政部,设置的汇报经理是行政部的经理,而实际这个助理的汇报经理是这个部门的老板,这样的情况都有可能发生。
asia_zy 2014-08-05
  • 打赏
  • 举报
回复
引用 4 楼 jjkk168 的回复:
AD仅作身份验证,但后台再加一个同步AD的数据信息到数据表的一个功能,毕竟一套系统中,AD能提供的信息还非常少,并且还受限于AD的管理,因此如果需要去取审批关系等信息,还是直接进入数据表去获取。另外,我们曾经维护过一套系统,这套系统过分地去读取AD的信息,甚至有着将域控读死机的案例。因此同步至数据表以后,维护方便、读取速度也快。
谢谢您的耐心回复,不过客户不想做用户维护,就想通过AD用户信息,直接进入系统。但是,系统菜单还要做不同职位的权限控制,比如说销售人员看到的菜单展示可能就和大区经理看到不一样…… 至于项目流程, 先是当前登陆用户填写申请并提交,右面就由他的上级职位人员去审批,听起来感觉不怎么难,难的是AD里面是否能提供所说的这些功能的可用信息……
还想懒够 2014-08-05
  • 打赏
  • 举报
回复
AD仅作身份验证,但后台再加一个同步AD的数据信息到数据表的一个功能,毕竟一套系统中,AD能提供的信息还非常少,并且还受限于AD的管理,因此如果需要去取审批关系等信息,还是直接进入数据表去获取。另外,我们曾经维护过一套系统,这套系统过分地去读取AD的信息,甚至有着将域控读死机的案例。因此同步至数据表以后,维护方便、读取速度也快。
jsonchu 2014-08-05
  • 打赏
  • 举报
回复
Dim ADpath As String="LDAP://AD验证服务器IP/dc=网域名称,dc=DC名称" 一般OA team会知道
jsonchu 2014-08-05
  • 打赏
  • 举报
回复
是公司局域网么?感觉你的描述有点不清楚。 如果是公司局域网其实没必要AD验证。 一般AD验证的用法是用户可以使用网域的账号密码直接登录你提供的登录页面。 后台去AD验证进行后续一系列操作。 而你想实现免验证的功能。建议直接验证用户名就好。权限的table还是必要的。 这个完全可以和人事table去串。就像你获取上一级信息一样。 如果没人事table和对应的权限判断依据table.你这一切想法都是没有基础的。 获取用户名:以 网域\用户名 为例。 Imports System.DirectoryServices str.Substring(str.IndexOf("\\", System.StringComparison.Ordinal) + 1).ToUpper().Trim(); AD验证: Dim DomainService As New DirectoryEntry With DomainService .Path = ADpath .Username = AppSettings("Domain") & "\" & txtUserId.Value .Password = txtPwd.Value End With Dim DomainSearch As New DirectorySearcher(DomainService) DomainSearch.Filter = "(SAMAccountName=" & txtUserId.Value & ")" DomainSearch.PropertiesToLoad.Add("CN") Try Dim R As SearchResult = DomainSearch.FindOne() ' Dim R As SearchResultCollection = DomainSearch.FindAll() If R Is Nothing Then lblmsg.Visible = True lblmsg.Text = "登錄失敗: ID or Password錯誤!" Else If myService.GetUserData(UCase(txtUserId.Value)) Then Response.Redirect("index.html", False) Else lblmsg.Visible = True lblmsg.Text = "登錄失敗: ID or Password錯誤!" End If End If DomainService.Close() Catch ex As Exception lblmsg.Text = ex.Message.ToString() DomainService.Close() lblmsg.Visible = True lblmsg.Text = "登錄失敗: ID or Password錯誤!" End Try
wangnaisheng 2014-08-04
  • 打赏
  • 举报
回复
还是感觉通过建立各自权限表,用户表,角色表 三者去关联,登陆,通过用户号去检索用户的角色,角色包含你设定的权限,通过权限控制显示的页面。

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧