[英]C# ASP.NET MVC & Entity Framework 6 throws error “Stored procedure not found”
[英]How can I validate an account with a stored procedure that uses hash encryption, C#, ASP.NET MVC, Entity Framework
所以基本上我有一个存储过程,如果用户存在,它能够解密密码并返回 1。 这是代码:
CREATE PROCEDURE [dbo].[ValidateAccount]
@Username VARCHAR(50),
@AccountPwd VARCHAR(100)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @Salt CHAR(25);
DECLARE @PwdWithSalt VARCHAR(125);
DECLARE @PwdHash VARBINARY(20);
SELECT @Salt = Salt, @PwdHash = [Pass]
FROM dbo.Users
WHERE Username = @Username;
SET @PwdWithSalt = @Salt + @AccountPwd;
IF (HASHBYTES('SHA1', @PwdWithSalt) = @PwdHash)
RETURN 1;
ELSE
RETURN 0;
END;
并且还有一个登录:
@using (Html.BeginForm("Index", "Home", FormMethod.Post))
{
<div class="form-group">
<i class="fa fa-user"></i>
<!-- I'm using htmlAtributes to add CSS class styles and HTML atributes on Editor controls-->
@Html.EditorFor(model => model.Username , new { htmlAttributes = new { @class = "form-control", @required = "true", @placeholder = "Username" } })
</div>
<div class="form-group">
<i class="fa fa-lock"></i>
@Html.TextBoxFor(model => model.Pass , new { data_bind = "value: Password", @class = "form-control", @required = "true", @placeholder = "Password", @type = "password" })
</div>
<div class="form-group">
<input type="submit" class="btn btn-primary btn-block btn-lg" value="Login">
</div>
}
我有一个 model:
public partial class Users
{
public string Username { get; set; }
public byte[] Pass { get; set; }
public string Name { get; set; }
public string Salt { get; set; }
public int ID { get; set; }
}
如您所见,数据库中的“通过”列是Byte[]
,因此我在执行该过程并验证用户是否存在并对仪表板采取 go 之类的操作时遇到问题。
有什么想法吗?,我无法找到一个实用的解决方案
这是我应该进行验证的主页 controller:
[HttpPost]
public ActionResult Index(Warehouse_APP.Models.Users userMod)
{
return View();
}
实际上,您得到的是一个存储过程,它使用与输入原始密码时相同的盐对用户输入的密码进行哈希处理。 如果这 2 个匹配,那么你得到一个 1 否则一个 0 作为返回值。
因此,在 MVC controller 的 HTTP_POST 方法中,您只需使用绑定 model 中的用户名和密码调用该存储过程,并根据结果重定向到相应的成功/错误页面。
您可能会使用实体框架,所以这里是如何执行 SQL: https://www.learnentityframeworkcore.com/raw-sql
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.