PDA

View Full Version : مبتدی: چگونگی ایجاد فرم لوگین به صورت خاص



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 استفاده کرد .
خیلی مطالعه کردم ولی هیچ جا نتیجه مشخصی ندیدم .

edezful
دوشنبه 07 اسفند 1391, 13:39 عصر
با تشکر از دوستان و اساتیدی که وقت نکردن :چشمک: به من پاسخ بدن مشکل حل شد.
کافی بود در AccountController.cs در اکشن Login به این شکل عمل می شد:


System_SetingDataClassesDataContext contentCheckUser = new System_SetingDataClassesDataContext();
var result = contentCheckUser.CheckUser(model.PerCode.ToString( ), model.UserName.ToString(), model.Password.ToString());
foreach (var r in result)
{
string Fname = r.Fname;

string Lname = r.Lname;
string Email = r.Email;

string Mobile_Home = r.Mobile_Home;
string Mobile_Work = r.Mobile_Work;//.ToString();
string Cellphone_Home = r.Cellphone_Home;
string Cellphone_Work = r.Cellphone_Work;

}