2012-01-17 31 views
2

loginpasswordを送信して、有効なユーザーであるかどうかをログイン試行で確認できるストアドプロシージャが必要です。これを行う簡単な方法はありますか?より多くの情報がないストアドプロシージャのユーザを検証する最も簡単な方法は?

+2

確認を。 sprocを書くだけです。理想的にはパスワードをsalt + hashする必要があります –

+0

データベースに、指定されたログインとパスワードの検証に使用するユーザーテーブルがありますか、またはデータベースの有効なログインと照合したいのですか? –

+0

私は、パスワードをハッシュし+ハッシュするコードを持っています。しかし、私はかなり新しいものは、SELECT/UPDATE/DELETE /などより高度なものを実行する限り、SQLにはかなり新しいです。私は、ストアドプロシージャに入力パラメータを送信する方法を知っていますが、私は正確な一致を得ることができるかどうかを確認するために、それぞれのフィールドに両方の両方を比較する方法はわかりません。また、ストアドプロシージャからtrue/falseを返す方法もわかりません。これらがかなり一般的で簡単なことをお詫び申し上げます。 –

答えて

5

私は一瞬のために提供することができる最高は次のとおりです。

CREATE STORED PROCEDURE CheckPassword 
    @username VARCHAR(20), 
    @password varchar(20) 
AS 
BEGIN 

SET NOCOUNT ON 

IF EXISTS(SELECT * FROM usertable WHERE username = @username AND password = @password) 
    SELECT 'true' AS UserExists 
ELSE 
    SELECT 'false' AS UserExists 

END 

クエリは、あなたの応答に基づいて改正 - これは文字列を返します「true」または「false」あなたはビット値とそれらを置き換えることができますあなたが好きなら、それぞれ1と0を入力します。

+0

申し訳ありませんが、 'username'と' password'が一致するレコードがあれば 'true'を返すだけです。ケースステートメントを使用しますか?ステートメント? –

+1

そのため、if節のSELECT文に 'AND' @ 'username =' @ 'password'を追加するだけでいいと思います。 (そうすれば、@記号の周りに置かなければならなかったので、私がそれらなしでコメントをすることはできません) – bobble14988

3

これは役立つかもしれない:

CREATE PROCEDURE CheckPassword 
    @username VARCHAR(20), 
    @password varchar(20) 
AS 
BEGIN 

SET NOCOUNT ON 

SELECT CASE WHEN EXISTS(SELECT NULL FROM usertable WHERE [email protected] AND [email protected]) 
    THEN CAST(1 AS BIT) 
    ELSE CAST(0 AS BIT) 
END 

END 
関連する問題