edezful
شنبه 05 اسفند 1391, 08:59 صبح
با سلام خدمت اساتید محترم،
هرچند ممکن است برخی از مطالبی که بیان می کنم کمی ابتدایی باشد اما سئوالم مهم است .
قصد دارم فرم لوگین را به صورتی طراحی کنم که
اولا: فیلدهای کنترلی شامل کد پرسنلی، نام کاربری و کلمه عبور باشد.
دوما:با استفاده از جدول ذخیره شده در پایگاه داده عمل لوگین کنترل شود نه با پیش فرض های ASP
سوم: کلیه عملیات تراکنش با روال ذخیره شده انجام شود.
* زبان برنامه ASP.net MVC 2010 , بانک SQL 2008
به این منظور
- نام پایگاه داده System_Seting
جدولی با نام Accounts بصورت زیر ساخته شد.
[id]
,[PerCode]
,[Username]
,[Passwords]
,[Groups]
,[States]
,[Last_Login]
,[Last_Logoff]
,[ISAdmin]
,[PINCode]
روال نیز به صورت
PROCEDURE [dbo].[CheckUser]
@PerCode nvarchar(10),
@Username nvarchar(50),
@Password nvarchar(50)
AS
BEGIN
SET NOCOUNT ON;
SELECT COUNT(*) from Accounts where PerCode=@PerCode and Username=@Username and Passwords=@Password
END
ایجاد شد.
در قسمت Models برنامه نیز در فایل System_setingDatsClass.cs جدول و روال دریافت و نیز روال بصورت زیر توسط کامپایلر ایجاد شده است:
[global::System.Data.Linq.Mapping.FunctionAttribute (Name="dbo.CheckUser")]
public ISingleResult<CheckUserResult> CheckUser([global::System.Data.Linq.Mapping.ParameterAttribut e(Name="PerCode", DbType="NVarChar(10)")] string perCode, [global::System.Data.Linq.Mapping.ParameterAttribut e(Name="Username", DbType="NVarChar(50)")] string username, [global::System.Data.Linq.Mapping.ParameterAttribut e(Name="Password", DbType="NVarChar(50)")] string password)
{
IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), perCode, username, password);
return ((ISingleResult<CheckUserResult>)(result.ReturnValue));
}
در نهایت با توجه به آنکه کنترل فرم لوگین در فایل AccountControl.cs اتفاق می افتد (در این قسمت)
if(Membership.ValidateUser(model.UserName, model.Password)) {
FormsAuthentication.SetAuthCookie(model.UserName, false);
if(Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
&& !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\")) {
return Redirect(returnUrl);
}
else {
return RedirectToAction("Index", "Home");
:اشتباه:
مشکل اینجاست که نمیدانم چگونه و در کجا باید با استفاه از روال عملیات لوگین را کنترل کنم و نتیجه را برگردانم.
اصلا در کجا و به چه صورتی باید از یک روال در MVC استفاده کرد .
خیلی مطالعه کردم ولی هیچ جا نتیجه مشخصی ندیدم .
هرچند ممکن است برخی از مطالبی که بیان می کنم کمی ابتدایی باشد اما سئوالم مهم است .
قصد دارم فرم لوگین را به صورتی طراحی کنم که
اولا: فیلدهای کنترلی شامل کد پرسنلی، نام کاربری و کلمه عبور باشد.
دوما:با استفاده از جدول ذخیره شده در پایگاه داده عمل لوگین کنترل شود نه با پیش فرض های ASP
سوم: کلیه عملیات تراکنش با روال ذخیره شده انجام شود.
* زبان برنامه ASP.net MVC 2010 , بانک SQL 2008
به این منظور
- نام پایگاه داده System_Seting
جدولی با نام Accounts بصورت زیر ساخته شد.
[id]
,[PerCode]
,[Username]
,[Passwords]
,[Groups]
,[States]
,[Last_Login]
,[Last_Logoff]
,[ISAdmin]
,[PINCode]
روال نیز به صورت
PROCEDURE [dbo].[CheckUser]
@PerCode nvarchar(10),
@Username nvarchar(50),
@Password nvarchar(50)
AS
BEGIN
SET NOCOUNT ON;
SELECT COUNT(*) from Accounts where PerCode=@PerCode and Username=@Username and Passwords=@Password
END
ایجاد شد.
در قسمت Models برنامه نیز در فایل System_setingDatsClass.cs جدول و روال دریافت و نیز روال بصورت زیر توسط کامپایلر ایجاد شده است:
[global::System.Data.Linq.Mapping.FunctionAttribute (Name="dbo.CheckUser")]
public ISingleResult<CheckUserResult> CheckUser([global::System.Data.Linq.Mapping.ParameterAttribut e(Name="PerCode", DbType="NVarChar(10)")] string perCode, [global::System.Data.Linq.Mapping.ParameterAttribut e(Name="Username", DbType="NVarChar(50)")] string username, [global::System.Data.Linq.Mapping.ParameterAttribut e(Name="Password", DbType="NVarChar(50)")] string password)
{
IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), perCode, username, password);
return ((ISingleResult<CheckUserResult>)(result.ReturnValue));
}
در نهایت با توجه به آنکه کنترل فرم لوگین در فایل AccountControl.cs اتفاق می افتد (در این قسمت)
if(Membership.ValidateUser(model.UserName, model.Password)) {
FormsAuthentication.SetAuthCookie(model.UserName, false);
if(Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
&& !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\")) {
return Redirect(returnUrl);
}
else {
return RedirectToAction("Index", "Home");
:اشتباه:
مشکل اینجاست که نمیدانم چگونه و در کجا باید با استفاه از روال عملیات لوگین را کنترل کنم و نتیجه را برگردانم.
اصلا در کجا و به چه صورتی باید از یک روال در MVC استفاده کرد .
خیلی مطالعه کردم ولی هیچ جا نتیجه مشخصی ندیدم .