ASP.NET MVC - 目录的用户访问权限

时间:2010-12-04 15:25:02

标签: c# asp.net asp.net-mvc asp.net-mvc-2

如何添加有限访问权限,只有1个特定用户可以访问1个特定目录,没有其他人可以访问它而不是他?我看过web.config的事情,但那不行。

基本上我正在尝试的是:

人创建用户=>新用户=>新目录(仅限新用户访问,无其他用户)。

提前致谢。

1 个答案:

答案 0 :(得分:1)

我目前正在处理的应用程序使用Authorize decoration与成员资格和角色提供程序(两者都是自定义)来管理对我的MVC站点内页面的访问,例如。

[Authorize(Users="MyUsername")]
public ActionResult Banking()
{
   return View();
}

[Authorize(Roles="SysAdmin, BusinessOwner")]
public ActionResult Banking()
{
   return View();
}

我发现这非常灵活,因为您可以公开(无装饰)任何登录用户[授权]或角色&用户。我个人永远不会构建一个授权用户的应用程序 - 角色是一个更加可扩展的选项(即使它目前只包含一个用户),有两个主要原因我不会这样做 - 用户变得笨重应用程序,然后将用户添加到装饰需要重新编译/重新部署应用程序,而在大多数情况下将用户与角色相关联通常是应用程序的业务逻辑在运行时处理的数据库关联。

在您的web.config中,您可以设置与此类似的内容以使用自定义提供程序:

 <system.web>
<membership defaultProvider="MyMembership" userIsOnlineTimeWindow="30">
  <providers>
    <clear/>
    <add name="MyMembership" type="MyDAL.MyMembership, MyDAL"/>
  </providers>
</membership>
<roleManager defaultProvider="MyRole" enabled="true" cacheRolesInCookie="true">
  <providers>
    <clear/>
    <add name="MyRole" type="MyDAL.MyRole, MyDAL" />
  </providers>
</roleManager>

然后创建继承提供程序的类:

using System.Web.Security;

namespace MyDAL
{
    class MyMembership : MembershipProvider//[ctrl + .] to create stubs
    {
        //Use Visual Studio to generate all the MembershipProvider stubs [ctrl + .]
    }
}

你最终会得到一堆抛出新NotImplementedException()的方法 - 有很多这些方法但是没有必要把它们全部填满 - 只需完成与你的应用相关的方法,剩下的就是是