首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何处理.net角色提供程序重定向?

如何处理.net角色提供程序重定向?
EN

Stack Overflow用户
提问于 2012-01-05 05:02:18
回答 1查看 738关注 0票数 1

我们在我们的网站(.net4,IIS7.5,VS2010)中实现了一个自定义的ASP.NET角色提供程序,这些都是很不错的东西。我的问题是,当用户被拒绝访问页面时,如何处理或拦截角色提供程序重定向?

让我说清楚。角色提供程序工作正常。我们在网站的各个子目录中创建了web.config文件,这些文件添加了适当的元素/属性以供访问。因此,假设我试图访问子目录中没有角色的页面...现在,角色提供程序将我重定向到我们的登录页面(可能也是我们的成员提供程序的web.config值)。

然而,我想要做的是将用户重定向到我们选择的自定义“拒绝访问”页面,而不是登录页面。

基于许多谷歌搜索,我尝试了一些根本不起作用的东西。

例如,有人建议在global.asax文件中添加自定义Application_Error方法。试过了,它从来没有被击中过。

我还尝试添加到web.config中的customErrors部分:

代码语言:javascript
运行
复制
<error statusCode="401" redirect="AccessDenied.aspx" /> 

再说一次,这从来没有起过作用。

正如我放入的许多调试断点一样,我所能断定的是,角色提供程序在生命周期中比我能捕捉到的要早得多,并且会自动重定向到我们的登录页面。

任何关于如何拦截这一点的想法都将不胜感激。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2012-01-05 05:19:34

当用户由于数据库中的某些内容而没有访问权限时,它将重定向到forms配置元素中指定的loginUrl,如下所示:

代码语言:javascript
运行
复制
<forms loginUrl="login.aspx" />

我唯一想到的是,如果您在登录页面,this.User.Identity.IsAuthenticated属性为真,则用户访问该页面是因为他们因这些问题之一而被重定向。这样您就可以重定向到AccessDenied.aspx页面。如果一个经过身份验证的用户被重定向到只为拒绝而登录,这将会起作用。否则,如果你需要将它们发送到不同的地方,我唯一能想到的就是在global.asax中丢弃内置的重定向功能,添加Application_AcquireRequestState处理程序或在其他地方(取决于你是否需要访问session ),检查用户的权限,并相应地(通过HttpContext.Current.Response.Redirect)重定向它们。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8733970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档