Asp.net mvc 面向初学者的ASP.NET MVC自定义成员资格

Asp.net mvc 面向初学者的ASP.NET MVC自定义成员资格,asp.net-mvc,membership,provider,Asp.net Mvc,Membership,Provider,我正在创建我自己的网站和博客,我希望第一次数据库中只有我一个人(我的名字和密码),以后可能会有其他人注册,但第一次登录只是为了我和授权管理。我不想使用MS的会员资格。我想尝试从一开始就创建自己的会员资格,所以我正在寻找初学者指南,但我找到了具有角色和权限的大型指南。我想要的只是一个小例子,检查用户名,数据库中的密码和登录数据。 谢谢你的帮助 伦敦银行同业拆借利率(Libor)嘿@Bibo,不要选择会员提供商。我认为一个UserService或类似的服务提供了创建、验证用户的方法和其他一些方法就足

我正在创建我自己的网站和博客,我希望第一次数据库中只有我一个人(我的名字和密码),以后可能会有其他人注册,但第一次登录只是为了我和授权管理。我不想使用MS的会员资格。我想尝试从一开始就创建自己的会员资格,所以我正在寻找初学者指南,但我找到了具有角色和权限的大型指南。我想要的只是一个小例子,检查用户名,数据库中的密码和登录数据。 谢谢你的帮助
伦敦银行同业拆借利率(Libor)

嘿@Bibo,不要选择会员提供商。我认为一个UserService或类似的服务提供了创建、验证用户的方法和其他一些方法就足够了。建议使用密码哈希和密码盐作为用户密码。是一个很好的链接。也看看我前段时间给你的

祝你好运


编辑:应该将rememberMe参数命名为keepdesignedin。

这篇关于表单身份验证的文章为您提供了大量创建自己的简单安全系统的信息,特别是关于表单身份验证票证的信息


即使您不想使用成员资格和角色提供程序数据存储,也可以使用身份验证。相信我,这比建造自己的房子容易多了。下面是它的工作原理:

我们会说您已经有了用于检索用户名和密码的用户存储设置。为了简单起见,我将假设您有一个名为DataLayer的静态类,它包含用于从数据库(或您使用的任何存储)提取信息的数据检索方法

首先,您需要一种让用户登录的方法。因此,设置一个包含用户名和密码字段的页面。然后,在页面发布的设置快速if语句的操作方法中:

    if (DataLayer.UserExists(userModel.Username))
    {
         User userFromDB = DataLayer.GetUser(userModel.Username);
         if (userFromDB.Password == userModel.Password)
         {
              FormsAuthentication.SetAuthCookie(userFromDB.Username, checkBoxRememberMe.Checked);
              //Use userFromDB as the username to authenticate because it will 
              //preserve capitalization of their username the way they entered it
              //into the database; that way, if they registered as "Bob" but they
              //type in "bob" in the login field, they will still be authenticated
              //as "Bob" so their comments on your blogs will show their name
              //the way they intended it to.

              return "Successfully logged in!";
         }
    }

    return "Invalid username or password.";
现在,他们已经通过身份验证,您可以在代码中使用Page.User.Identity.IsAuthenticated来确定他们是否已登录。像这样:

if (User.Identity.IsAuthenticated)
{
     DataLayer.PostBlogComment(User.Identity.Name, commentBody);
     //Then in your controller that renders blog comments you would obviously 
     //have some logic to get the user from storage by the username, then pull
     //their avatar and any other useful information to display along side the
     //blog comment. This is just an example.
}
此外,您可以将整个操作方法甚至整个控制器锁定给通过表单身份验证提供程序进行身份验证的用户。您所要做的就是向动作方法/控制器添加如下标记:

[Authorize]
public ActionResult SomeActionMethod()
{
    return View();
}
[Authorize]
属性将阻止未登录的用户访问该操作方法,并将他们重定向到您的登录页面。如果使用内置角色提供程序,则可以使用此属性筛选出角色

[Authorize(Roles="Admin, SalesReps")]
public ActionResult SomeActionMethod()
{
    return View();
}
这些属性也可以添加到控制器类之上,以将其逻辑应用于整个控制器


编辑:要注销用户,只需调用
FormsAuthentication.SignOut()

谢谢你的帮助,但我找不到任何可以帮助我的东西。你能链接一些关于这方面的文章吗?CodeCampServer是一个示例应用程序,它实现了你想要的东西。嗨,你已经选择了访问数据库的方法了吗?(实体框架,linq2sql,ado.net?)