代码之家  ›  专栏  ›  技术社区  ›  DrydenMaker

如何向MVC应用程序公开内置的安全性和用户管理?

  •  9
  • DrydenMaker  · 技术社区  · 17 年前

    我在iis6上建立了一个MVC网站。我使用了不带成员资格的内置ASP.NET安全性,就像模板解决方案中实现的那样。保护控制器或操作很容易,但现在我需要向登录到站点的管理员公开用户管理。我了解这样做的内置ASP控件并不是“最佳实践”,而是一只需要工作的狗。那么,通过ASP.NET MVC应用程序提供用户管理的最佳实践是什么?

    我考虑使用实体框架并将其连接到无数存储过程中。但这似乎很尴尬。我看到AccountMembershipService和FormsAuthenticationService的选项。这就是现有项目帐户控制器所使用的。但是,我也不是菲米利亚。

    我情不自禁地认为这应该已经从项目模板中得到了。这是任何一个网站的基本组成部分,你得到了15%的回报,为什么不剩下呢?

    5 回复  |  直到 16 年前
        1
  •  1
  •   paracycle    17 年前

    据我所知,你正在使用 SqlMembershipProvider 作为您的成员资格提供程序实现。我强烈建议你看看 成员用户 和 成员身份提供程序 类(例如 创建用户 等)以实现您正在尝试执行的操作,而不是使用用于实现的基础数据库表。

    你也可以看看 this article 为深入介绍 ASP.NET的成员资格、角色和配置文件 提供者。

        2
  •  1
  •   Eduardo Molteni    17 年前

    在codeplex查看此项目: ASP.Net MVC Membership Starter Kit

        3
  •  0
  •   Peter    17 年前

    我不知道“最佳实践”,但这是我将如何做到的(以及它是如何写的) Professional ASP.NET MVC 1.0 “”:

    您应该有一个自定义的(或默认的)profileprovider和membershipprovider,以便它工作。

    创建一个处理所有成员管理操作的控制器,如memberadmincontroller

    此控制器应指定authorize[roles=“administrator”]属性,因此只有当用户处于管理员角色时,才会处理此控制器中的所有操作。

    现在,您可以只使用此控制器以希望的方式构建CRUD视图和操作。

        4
  •  0
  •   DrydenMaker    17 年前

    我现在让用户auth以某种理智的方式工作。要克服的最大障碍是,使用成员类是可以的,即使我没有使用成员的配置文件方面。很容易获得用户名和成员身份。get user(用户名)。然后你可以做很多事情,比如解锁、批准/不批准、更改密码和更改密码问答…我需要的所有基础知识。

    以下是基础知识:

    'get current logged in user
    Dim currentUser As MembershipUser = Membership.GetUser()
    
    'get current logged in user name
    Dim userName = currentUser.UserName
    
    'get current user email
    Dim userEmail = currentUser.Email
    
    'get a user to edit
    Dim editingUser = Membership.GetUser(UserName)
    
    'set the user email
    editingUser.Email = newEmail
    Membership.UpdateUser(editingUser)
    
    ‘unlock user
    editingUser.UnlockUser() 
    
    ‘disapprove user
    editingUser.IsApproved = False
    Membership.UpdateUser(editingUser) 
    
    ‘approve user
    editingUser.IsApproved = True
    Membership.UpdateUser(editingUser)
    
    ‘change pw
    editingUser.ChangePassword(oldPw, newPw)
    

    基本上就这些了,还有

        5
  •  0
  •   MvcCmsJon    16 年前

    在MVCCMS中,我们使用了现成的RoleProvider,但将成员资格提供程序转换为实体。

    http://mvccms.codeplex.com/SourceControl/changeset/view/56727#994414