2010-12-08 87 views
0

在我了解.NET的身份验证/授权和登录重定向系统如何工作时,我一定有些东西缺失。我有一个网页管理员/ Default.aspx的一个限定为admin用户,所以我有,例如:.NET身份验证授权角色登录redirct returnURL混淆

<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%2fDefault.aspx)。现在,如果用户再次使用不符合“admin”角色规范的凭证登录,他将被重定向到admin /默认页面,然后再次返回到登录页面。

我想它的一切工作正常,但似乎我可以重定向到登录页面,如果用户没有登录,但重定向他到另一(家庭或默认)页面,如果他已登录但不符合角色要求。

我该如何去做这件事?

由于提前,

生锈

回答

0

为此,您可以通过两种方式:

  1. 写的形式提供派生的自定义身份验证提供者。

  2. 编写一个HttpModule,我不确定哪个事件最适合陷入,就像认证之前你没有角色一样,认证之后表单认证模块已经将你重定向到登录页面。因此在后面的事件中确定重定向响应可能是一条路。 (这可能具有辅助效果,即对于经过验证的用户的登录页面的所有重定向将转到登录用户的主页面)

+0

感谢您的回复。与此同时,我想出了一个解决方法,遵循这个博客的想法:http://geekswithblogs.net/ranganh/archive/2005/04/25/37598.aspx,并发现它类似于你的#2的建议。在登录页面上,我检查用户是否已经过身份验证,并且是否有returnURL - 如果是这样,我只需重定向到主页。我会认为有一个更正式的解决方案使用.Net的安全设置,但它现在可行。 – rusty 2010-12-08 17:56:58