我目前正在开发一个带有主页和多个部门页面的Intranet Web应用程序,该Web应用程序仅用于查看信息,因此每个人都拥有相同的权限。我已经达到了一个点,我必须担心应用程序的访问和身份验证,我的公司有一个活动目录,我可以使用几个组,搜索一段时间后我得到以下问题:
我很抱歉所有的问题,但我对c#和.net开发相对较新
答案 0 :(得分:0)
以下是您最新一组问题的答案:
- 在webconfig中我可以指定有权访问每个部门页面以及主页的组吗?有点像下面的代码,如果是这样,我需要在分配哪些组可以访问哪个页面之前放置我的ldap连接字符串,对吗?
[Dipra] 您可能最好不使用web.config中的角色进行身份验证,因为这还需要定义角色。我们在这里讨论AD组,用户将参与其中。因此,在Page_Load()
中,只需调用身份验证方法,可能会传递用户名,AD组允许访问该页面作为参数。如果您想使解决方案可配置,请将特定页面允许的AD组存储为'键'在你的web.config中,然后在你的代码中读取它们。将该组与用户名一起传递给您的身份验证方法。
- 当用户打开网站时,系统会提示他插入他的Windows凭据,这是自动的,对吧?然后,他将能够看到主页,然后转到他的部门页面,对吗?
[Dipra] 是的,这是自动的。不需要单独的代码。只要经过身份验证,他就可以去任何他想要的页面。
- 如果我理解正确的话,在每个page_load事件中,我需要搜索用户的名字并检查他所属的组,是吗?
[Dipra] 是的,您需要在每个Page_Load()
方法中进行检查。作为一种方法,您可以尝试获取用户所属的所有组,然后检查该页面允许的AD组是否属于这些组之一。如果是,则可以对用户进行身份验证。
-i以上是真的,现在我要解释页面的导航,因为我认为搞乱page_load可能会给我带来一些问题 是否会检查每个页面加载时用户所属的组?不会让应用程序变慢?
[Dipra] 每个服务器端控件,例如asp按钮,都会导致回发。为了确保每次在页面上发生回发时Page_Load()
中的身份验证代码都不会运行,请将该位括在if(!Page.IsPostBack) {}
中。这意味着当该页面未被回发时,该块内的任何代码将运行,即第一次呈现。来自此页面上服务器端控件的任何后续回发都将忽略此块中的代码。
- 最后,为了检查每个用户的成员资格,我需要一个类似的代码来代替我在下面粘贴的The Link that Dipra posted上的第二个答案,但是在c#中,对吗?
[Dipra] 您可以参考上面帖子中接受的答案,可能需要对您自己进行一些调整。它已经在C#中了。
答案 1 :(得分:0)
key
,则可以存储相应AD组的名称,允许访问value
字段中的Marketing页面。是的,一旦你让它在一个页面上工作,其他人就会更容易。try...catch
块中。如果在对AD进行身份验证时出现问题(例如,连接问题),那么您的代码将抛出异常。捕获(并理想地记录)异常并将用户重定向到错误页面,可能说存在一些阻止身份验证的问题。在这种情况下,您不应该授予用户访问权限。