C# 许多不同文件夹的asp.net授权
我正在使用asp.net(c#) 问题: 我需要允许用户从不同页面登录:C# 许多不同文件夹的asp.net授权,c#,asp.net,logging,C#,Asp.net,Logging,我正在使用asp.net(c#) 问题: 我需要允许用户从不同页面登录: www.mypage.com/login.aspx www.mypage.com/orgs/org-1/login.aspx www.mypage.com/orgs/org-2/login.aspx www.mypage.com/orgs/org-3/login.aspx 。。。其中1、2、3等为组织ID 目前,当我打开www.mypage.com/orgs/org-1/login.aspx时,用户被重定向到www.my
www.mypage.com/login.aspx
www.mypage.com/orgs/org-1/login.aspx
www.mypage.com/orgs/org-2/login.aspx
www.mypage.com/orgs/org-3/login.aspx
。。。其中1、2、3等为组织ID
目前,当我打开www.mypage.com/orgs/org-1/login.aspx时,用户被重定向到www.mypage.com/login.aspx
整个故事:
我有一个不是我自己编写的应用程序。它有一个主登录页(www.mypage.com/login.aspx)。
但它也有许多不同的登录页面——每个组织都有自己的登录页面,位于Orgs/Org ID/login.aspx文件夹中。这是必要的,因为组织希望在其登录页面上有不同的颜色方案、徽标、一些额外信息、自定义欢迎声明和其他自定义内容
我以前没有做过,但现在的计划如下:
1) www.mypage.com/login.aspx是基本登录页面;每个人都可以从这个页面登录。它起作用了。
2) 有一个文件OrgLogin.aspx(请注意,codebhind=“Login.aspx.cs”!!)包含一些组织的自定义登录页面。它与Login.aspx稍有不同,但使用相同的代码隐藏
3) 当应用程序管理员从应用程序界面创建新组织时,OrgLogin.aspx文件被复制到一个位置www.mypage.com/orgs/org-1/login.aspx(其中1是组织id,它会更改),并将此文件重命名为login.aspx。
如果组织管理员愿意,每个login.aspx文件都可以自定义。如果他们不需要,则使用默认页面
到目前为止,这一点是明确的,但以下几点不起作用:
4) 必须允许用户从不同页面登录:
www.mypage.com/orgs/org-1/login.aspx->显示相应文件夹中的login.aspx(根文件夹中的login.aspx.cs是CodeBehind)
www.mypage.com/orgs/org-2/login.aspx
...
目前,当我导航到www.mypage.com/orgs/org-2/login.aspx时,系统会将用户重定向到www.mypage.com/login.aspx?returnurl
编辑
文件夹的完整结构如下所示:
orgs/org-/login.aspx->应该可以访问,而无需重定向到root登录
orgs/org-/forgotpassword.aspx->应该可以访问,而无需重定向到根forgotpassword
orgs/org-/document(文件夹)->在没有身份验证的情况下不应可访问
orgs/org-/images(文件夹)->在没有身份验证的情况下不应可访问
我读过一些解决方案,当只有两个不同的文件夹时,它们通常具有不同的角色(管理员和非管理员),例如
但这不是我的情况。您可以使用URL重写来实现这一点(只要您在.NET 3.5 SP1+上使用。您的流程将遵循以下几点:
www.mypage.com/orgs/org-2/login.aspx
被重写为www.mypage.com/login.aspx
,org-2存储在路由值中www.mypage.com/login.aspx
。这避免了所有重定向类型问题如果您的
orgs/org-*
文件夹仅包含OrgLogin.aspx
页面,您可以放置web.config
文件以允许访问该页面/避免重定向。此web.config
文件的内容将是
<?xml version="1.0"?>
<configuration>
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</configuration
它是在用户进入登录页面后立即重定向还是在用户登录后重定向?如果是在他们登录之后,听起来像是登录脚本本身在做。这不起作用,因为orgs/org-1/login.aspx不同于orgs/org-2/login.aspx等。创建组织时,这些页面是相同的,但组织管理员可以自定义login.aspx查看页面。因此,我不能只使用一个login.aspx查看页面。您可以通过此设置为组织管理员自定义访问权限,您只需将其更改保存到数据库。使用css,您可以让他们几乎100%地控制登录页面的外观,并且仍然将其保存在一个物理页面上。这是允许组织管理员“手动”编辑login.aspx页面的要求。我没有可能将他们的更改保存在DB中。我已经更新了我的帖子。您可以看到,在给定的目录中还有一些其他子文件夹(不是文件),在没有身份验证的情况下不应访问这些子文件夹。它还包含ForgotPassword.aspx,它也是自定义的。我应该在哪里添加这个web.config?注意thingat org-*文件夹由系统动态创建。请注意,我只有登录,没有登录页面。Orglogin.aspx只是一个模板,可以复制并重命名为login.aspx。@renathy this web.config应该位于org-*文件夹中。复制orglogin.aspx时,您可以手动复制粘贴每个文件夹中的文件。
<configuration>
<location path="Login.aspx">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
</configuration>