Asp.net mvc asp.net MVC中的简单用户/密码保护
一个非常简单的问题,也许有人会给我这样的MVC初学者一个建议。我想对MVC应用程序进行密码保护—只需输入用户/密码即可—我是通过ASPNETDB和SqlMembershipProvider实现的,但希望有一种更简单的方法—在webforms中,我是通过向web.config添加用户/密码实现的 我真的需要编写自己的XmlMembershipProvider来解决这个问题吗?如果是,您知道一个非常简单的现有XmlMembershipProvider可以为我做这件事吗?Asp.net mvc asp.net MVC中的简单用户/密码保护,asp.net-mvc,asp.net-membership,forms-authentication,Asp.net Mvc,Asp.net Membership,Forms Authentication,一个非常简单的问题,也许有人会给我这样的MVC初学者一个建议。我想对MVC应用程序进行密码保护—只需输入用户/密码即可—我是通过ASPNETDB和SqlMembershipProvider实现的,但希望有一种更简单的方法—在webforms中,我是通过向web.config添加用户/密码实现的 我真的需要编写自己的XmlMembershipProvider来解决这个问题吗?如果是,您知道一个非常简单的现有XmlMembershipProvider可以为我做这件事吗? 非常感谢 您不需要使用任何会
非常感谢 您不需要使用任何会员资格提供商来对应用程序进行密码保护。您只需提供一个服务来验证用户凭据。你可以寻找一个如何做到这一点的想法。基本上,您需要生成一个salt,然后使用该salt(以及提供的密码)散列用户密码。然后将salt和哈希密码存储在数据库中。试试看,不难。验证用户的凭据后,可以使用我编写的代码使用表单身份验证
干杯 您不需要使用任何会员资格提供商来对应用程序进行密码保护。您只需提供一个服务来验证用户凭据。你可以寻找一个如何做到这一点的想法。基本上,您需要生成一个salt,然后使用该salt(以及提供的密码)散列用户密码。然后将salt和哈希密码存储在数据库中。试试看,不难。验证用户的凭据后,可以使用我编写的代码使用表单身份验证
干杯 您好,如果您使用visual studio启动了一个mvc项目,那么您有一个标准的UserController。如果您查看此类,您将发现以下方法:
public virtual ActionResult LogOn(LogOnModel model, string returnUrl)
您可以在这个函数中使用自己的代码来验证密码和登录
例如:
public virtual ActionResult LogOn(LogOnModel model, string returnUrl)
{
if(model.Password == "YourPassword" && model.UserName == "YourUserName")
{
FormsService.SignIn(model.UserName, model.RememberMe);
if (!String.IsNullOrEmpty(returnUrl))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("ActionName");
}
}
else
{
ModelState.AddModelError("", "Wrong credentials.");
return View(model);
}
}
希望它能帮助你。
关于您好如果您已经使用visual studio启动了一个mvc项目,那么您有一个标准的UserController。如果您查看此类,您将发现以下方法:
public virtual ActionResult LogOn(LogOnModel model, string returnUrl)
您可以在这个函数中使用自己的代码来验证密码和登录
例如:
public virtual ActionResult LogOn(LogOnModel model, string returnUrl)
{
if(model.Password == "YourPassword" && model.UserName == "YourUserName")
{
FormsService.SignIn(model.UserName, model.RememberMe);
if (!String.IsNullOrEmpty(returnUrl))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("ActionName");
}
}
else
{
ModelState.AddModelError("", "Wrong credentials.");
return View(model);
}
}
希望它能帮助你。
关于为什么XML会员资格提供者?您只需继承表单
IMembershipProvider
并实现所需的功能。为什么XML成员资格提供者?您只需继承表单IMembershipProvider
,并实现所需的功能。我最后做的是:
public class MyMembershipProvider : MembershipProvider {
// ...
public override bool ValidateUser(string username, string password)
{
return FormsAuthentication.Authenticate(username, password);
}
}
web.config:
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880" >
<credentials passwordFormat="Clear">
<user name="rga" password="XYZ"/>
</credentials>
</forms>
</authentication>
因此,没有必要更改AccountController。
谢谢你的帮助。我最后做的是:
public class MyMembershipProvider : MembershipProvider {
// ...
public override bool ValidateUser(string username, string password)
{
return FormsAuthentication.Authenticate(username, password);
}
}
web.config:
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880" >
<credentials passwordFormat="Clear">
<user name="rga" password="XYZ"/>
</credentials>
</forms>
</authentication>
因此,没有必要更改AccountController。
谢谢您的帮助。非常感谢,同时我通过自己的会员资格提供商完成了这项工作-刚刚覆盖了ValidateUser,并且工作正常-但您的解决方案更简单…非常感谢,同时,我通过我自己的成员身份提供程序实现了这一点——刚刚覆盖了ValidateUser,它起了作用——但您的解决方案更简单……我正在考虑将User/Passwd insinde存储在一个xml文件或web.config中。我正在考虑将User/Passwd insinde存储在一个xml文件或web.config中。这对于只有一个的个人网站来说非常简单登录而没有真正的用户这对于只有一个登录而没有真正用户的个人网站来说非常简单