簡體   English   中英

存儲過程的返回值

[英]Stored procedure returned value

我已經在SQL Server上實現了Bcrypt 一切正常。

我現在正在嘗試創建一個過程,在該過程中,用戶發送其用戶名和密碼(未哈希),無論是否允許他,該過程都將返回。

CREATE PROCEDURE CONNECTION
    @Login_name VARCHAR(15),
    @not_hashed_pass CHAR(15)
AS
BEGIN
    DECLARE @is_match BIT

    SET @is_match = (SELECT
                         dbo.CheckPassword(@not_hashed_pass, 
                                           (SELECT user_password FROM USERS 
                                            WHERE LOGIN_NAME= @Login_name)))

    IF @is_match = 1 
        PRINT 'connected'
    ELSE
        PRINT 'not connected'    
END

如果執行該過程,則會得到以下結果

未連接(@is_match = 0)

但是,如果我嘗試執行我設置為@is_match的查詢:

SELECT
    dbo.CheckPassword('azeqsd456789', 
                      (SELECT user_password FROM USERS 
                       WHERE LOGIN_NAME = 'Bob))

我得到1退還。

查詢和過程都使用相同的值執行。

除了使用哈希密碼之外,您的問題還在於char()varchar()的混淆。 您的過程聲明為:

CREATE PROCEDURE CONNECTION (
    @Login_name varchar(15),
    @not_hashed_pass char(15)
)

您輸入的密碼有12個字符,因此將三個空格填充到''azeqsd456789 ' 因此,它們不匹配。

我建議修復過程定義:

CREATE PROCEDURE CONNECTION (
    @Login_name varchar(15),
    @not_hashed_pass varchar(15)
)

但更重要的是,我強烈建議您不要使用明文密碼,並始終對它們進行哈希處理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM