确定用户是否可以访问所请求的页面?

use*_*659 7 asp.net login security-roles

我有一个具有多个角色的ASP.Net网站,每个角色都可以访问一个单独的目录(即管理员用户可以访问/管理员,购物者可以访问/购物等),使用共享登录页面.如果有人访问登录页面并将返回URL设置为他们无权访问的目录(例如,购物者访问/login.aspx?returnurl=/admin/index.aspx),则用户可以成功验证(登录凭据是有效),但他们最终回到登录页面(他们无法访问他们要求的页面).

我该怎么选择这个,所以我可以向用户显示一条消息吗?

And*_*rey 12

UrlAuthorizationModule.CheckUrlAccessForPrincipal()
Run Code Online (Sandbox Code Playgroud)

是您需要用来测试用户对位置(页面或文件夹)的访问权限(http://msdn.microsoft.com/en-us/library/system.web.security.urlauthorizationmodule.checkurlaccessforprincipal.aspx)

  • +1.示例代码可从http://www.codeproject.com/KB/aspnet/Redirect-To-Login-Popup.aspx获得. (2认同)

use*_*659 2

我最终在登录页面的 page_load 事件中执行此操作:

if (User.Identity.IsAuthenticated)
{
    LoginErrorDetails.Text = "You are not authorized to view the requested page";
}
Run Code Online (Sandbox Code Playgroud)

我们的想法是,如果经过身份验证的用户最终到达登录页面,那么他们要么是因为尝试访问他们无权查看的页面而被发送,要么是他们已经通过身份验证,然后手动进入登录页面(不太可能)。

进一步的操作是,如果用户已经通过身份验证,则每当用户访问登录页面时,都会将其发送到相关主页。