-1

これらの列を持つuserテーブルがあります:

    user_id
    user_name
    password
    createdate
    full_name
    location
    dep_id
    user_type

ユーザー名とパスワードを含むログインフォームがあります。

これで私はsloginを作成します

create procedure splogin
  @User_Name nvarchar(50),
  @Password nvarchar(50)
as
  Select * from [User] 
  Where User_Name = @User_Name
    and Password = @Password

usertype次に、ログインフォームまたはユーザープロファイルフォームで言及されていることを知りたいですか?

また、ログインフォームを介して、すべてのユーザーがログインできます

つまり、ドキュメントを承認したマネージャー、ディレクター、エグゼクティブ、およびドキュメントをアップロードするだけの単純なユーザー

4

2 に答える 2

2

まず第一に、パスワードをデータベースに保存することは悪い習慣と考えられています (DB アクセス権を持つチームの誰もがパスワードをすべて見ることができます)。むしろ、一方向ハッシュまたはチェックサムをデータベースに保存し、ログイン時に、送信されたパスワードから一方向ハッシュまたはチェックサムを再作成し、DB にあるものと一致するかどうかを確認する必要があります。

しかし、あなたの質問には、認証(あなたがあなたが誰であるかを確認すること)と承認(あなたがやろうとしていることを許可されていますか)を組み合わせようとしているようです

これら 2 つの機能は、互いに分離しておく必要があります。それらを 1 つの関数に結合することも悪い習慣であり、多くの問題を引き起こす可能性があります。

于 2013-03-13T20:09:24.517 に答える
0

ユーザーオブジェクトを使用してセキュリティを実行したいようです。このような場合は。「Select」ステートメントが返すものを使用してユーザー オブジェクトを作成します。

ベーシッククラス

class UserObj
UserName
Location
DepartmentID
UserType

次に、それをセッションに保存します。そのようです:

Session["CurrentUser"] = UserObj;

その後、検証を実行したいときはいつでも。オブジェクトをセッションから取得します。

UserObj currentUser = (UserObj)Session["CurrentUser"];

そして、有効なユーザータイプがあるかどうかを確認します

if(currentUser.UserType == "Director")
{
  //run this code
  //hide objects
  grid_BusinessStuff.visible = false;
}
于 2013-03-13T20:08:10.933 に答える