Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.NET身份验证授权角色登录重读返回URL混淆_.net_Asp.net_Forms Authentication - Fatal编程技术网

.NET身份验证授权角色登录重读返回URL混淆

.NET身份验证授权角色登录重读返回URL混淆,.net,asp.net,forms-authentication,.net,Asp.net,Forms Authentication,在我对.NET的身份验证/授权和登录重定向系统的工作原理的理解中,我肯定缺少一些东西。我有一个admin/default.aspx页面,该页面仅限于管理员用户,因此我有以下示例: <configuration> <system.web> <authorization> <allow roles="admin" /> <deny users="*" /> </aut

在我对.NET的身份验证/授权和登录重定向系统的工作原理的理解中,我肯定缺少一些东西。我有一个admin/default.aspx页面,该页面仅限于管理员用户,因此我有以下示例:

<configuration>
  <system.web>
    <authorization>      
      <allow roles="admin" />      
      <deny users="*" />
    </authorization>
  </system.web>
</configuration>

当用户到达此处时,如果他不是管理员,他将被重定向到web.config中指定的登录页面:

<authentication mode="Forms">
  <forms loginUrl="Login.aspx" name="someName" timeout="60" path="/">
  </forms>
</authentication>

带有返回url(看起来像是ReturnUrl=%2fAdmin%2fault.aspx)。现在,如果用户使用与“管理员”角色规范不匹配的凭据再次登录,他将被重定向到管理员/默认页面,然后再次返回登录页面

我想这一切都很好,但如果用户未登录,我似乎可以重定向到登录页面,但如果用户已登录但不符合角色要求,我可以将其重定向到另一个(主页或默认)页面

我该怎么做呢

提前感谢,


Rusty

您可以通过以下几种方法来实现:

  • 编写从表单提供程序派生的自定义身份验证提供程序

  • 写一个HttpModule,我不确定哪一个事件是最好的陷阱,因为在身份验证之前您没有角色,在身份验证之后,表单身份验证模块已经将您重定向到登录页面。因此,在以后的事件中识别重定向响应可能是一种方法。(这可能会产生辅助效果,即已验证用户登录页面的所有重定向都会转到已登录用户的主页)


  • 谢谢你的回复。与此同时,我根据这篇博文的想法想出了一个解决办法,结果证明它与你的#2建议相似。在登录页面上,我检查用户是否已经过身份验证,是否有返回URL——如果是,我只需重定向到主页。我本以为会有一个更正式的解决方案使用.Net的安全设置,但它现在起作用了..Net安全设置是为“大多数时间的大多数人”量身定做的,但它是为这样的可扩展性精心设计的!注:如果答案有帮助,不要忘记投票并接受答案(即使是你自己的答案),因为人们开始不愿意帮助那些不接受或不承认答案的人