【问题标题】:Simplest way to protect whole folder (with authentication) using asp.net MVC and OpenID使用 asp.net MVC 和 OpenID 保护整个文件夹(通过身份验证)的最简单方法
【发布时间】:2009-06-29 03:31:41
【问题描述】:

我对asp.net和mvc真的很陌生,所以我有点迷茫。

我成功地使用这个Tutorial 在我的应用程序中使用 OpenID 登录。

但我不确定设置 Session["Admin"] = true 是否是正确的路径,到目前为止我的代码是这样的:

switch (openid.Response.Status)
{
  case AuthenticationStatus.Authenticated:
    if (openid.Response.ClaimedIdentifier.ToString() == Settings.Default.AdminClaimedIdentifier)
      Session["Admin"] = true;                                 
    FormsAuthentication.RedirectFromLoginPage(openid.Response.ClaimedIdentifier, false);
    break;
  ...
}

我正在尝试编写的应用程序现在只需要一个管理员,我发现在“设置”中只使用该管理员的 OpenID 非常容易。

基本上我想要做的是在设置中有一个管理员的 OpenID,他们根据此身份验证保护整个文件夹,因此其中的每个操作及其子文件夹都需要管理员权限,例如:~/Admin/whatever/edit /1 需要身份验证。

进行这种身份验证的最简单、最简洁的方法是什么?

【问题讨论】:

    标签: asp.net-mvc authentication openid


    【解决方案1】:

    OpenID 为您提供身份验证(您是谁?),其中限制对“文件夹”或管理控制器的访问是授权(您能做什么?)。

    一个简单的解决方案也可以在未来(根据您的需要)为您工作,即使用 RoleProvider,这将允许您按照 griegs 的建议使用 Authorize 属性。

    【讨论】:

      【解决方案2】:

      我不知道 OpenId,但通常您会将以下内容放在控制器类的顶部以锁定整个文件夹,或者将以下内容放在 ActionResult 以锁定该操作;

      [Authorize(Roles="admin")]
      

      希望这会有所帮助。

      【讨论】:

      • 除非您将其与授权机制相结合,否则这将不起作用。 [Authorize] 可以工作,即允许任何经过身份验证的用户,[Authorize(Roles="admin")] 不会使用上述代码。
      猜你喜欢
      • 1970-01-01
      • 2021-01-17
      • 2011-11-06
      • 1970-01-01
      • 2012-01-13
      • 2011-07-17
      • 1970-01-01
      • 1970-01-01
      • 2012-01-01
      相关资源
      最近更新 更多