PDA

View Full Version : گفتگو: درست کردن لاگین بصورت دستی و استفاده نکردن از لاگین دات نت؟



hamid1988
چهارشنبه 03 تیر 1388, 13:40 عصر
سلام ...
می خوام لاگین رو خودم درست کنم و از لاگین دات نت استفاده نکنم!
لطفاَ در مورد اینکه چه چیز هایی باید در Web.Config بنویسم راهنماییم کنید.

Asad.Safari
چهارشنبه 03 تیر 1388, 14:18 عصر
هیچ چیز لازم نیست در Web.config بنویسید مگر Connection String اتون رو .

لینک پایین یک نمونه ساده در این مورد می باشد :
http://www.codeproject.com/KB/aspnet/useraccountlogin.aspx

موفق باشید

hamid1988
چهارشنبه 03 تیر 1388, 16:13 عصر
هیچ چیز لازم نیست در Web.config بنویسید مگر Connection String اتون رو .

لینک پایین یک نمونه ساده در این مورد می باشد :
http://www.codeproject.com/KB/aspnet/useraccountlogin.aspx

موفق باشید

خیلی ممنون ولی...
پروژه ارور میده!
از کدهاش هم سر در نیاوردم!
اگه یه پروژه ساده ی تک صفحه ای با توضیحات فارسی دارین لطفاَ برای دانلود بزارین.
می خوام بیشتر طرز عملکردش رو بدونم تا کد.

mononok
چهارشنبه 03 تیر 1388, 22:00 عصر
سلام


Listing 9.3 Web.config
01 <configuration>
02 <system.web>
03
04 ...
05
06 <authentication mode="Forms">
07 <forms name=".ASPXAUTH"
08 loginurl="/login.aspx"
09 protection="Encryption">
10 <credentials passwordformat="SHA1">
11 <user name="Ron"
password="AB54B7H109AE41F0"/>
12 <user name="Scott"
password="0F14AE901H7B45BA"/>
13 </credentials>
14 </forms>
15 </authentication>
16
17 <authorization>
18 <allow users="Ron,Scott"/>
19 <deny users="*"/>
20 </authorization>
21
22 ...
23
24 </system.web>
25 </configuration>
Listing 9.4 login.aspx
01 <%@ Import Namespace="System.Web" %>
02 <%@ Import Namespace="System.Web.UI.WebControls" %>
03 <%@ Import Namespace="System.Web.Security" %>
04
05 <html>
06 <head>
07 <title>Login Page</title>
08 <script runat="server" language="VB">
09 Public Sub loginButton_OnClick(Sender As
Object, _
10 E As EventArgs)
11
12 If
FormsAuthentication.Authenticate(UserName.Text, _
13
Password.Text) Then
14
15
FormsAuthentication.RedirectFromLoginPage(UserName .Text,
_
16
Persist.Checked)
17 Else
18
19 ErrorLabel.Text = "Invalid
Username/Password combination"
20
21 End If
22
23 End Sub
24
25 </script>
26 </head>
27 <body>
28 <form runat="server">
29 <p>
30 <b>Please Log in</b>
31 </p>
32 <hr>
33 <p>
34 The resource you have requested requires a
valid login.
35 Please provide your username and password
below.
36 </p>
37 <p>
38 <asp:label runat="server"
39 id="ErrorLabel"/>
40 </p>
41 <p>
42 <table>
43 <tr>
44 <td>Username:</td>
45 <td>
46 <asp:textbox runat="server"
47 id="UserName"
48 TextMode="SingleLine"/>
49 </td>
50 </tr>
51 <tr>
52 <td>Password:</td>
53 <td>
54 <asp:textbox runat="server"
55 id="Password"
56 TextMode="Password"/>
57 </td>
58 </tr>
59 <tr>
60 <td colspan="2">
61 <asp:checkbox runat="server"
62 id="Persist"
63 Text="Keep me logged in
between
64 browser restarts"/>
65 </td>
66 </tr>
67 <tr>
68 <td colspan="2">
69 <asp:linkButton runat="server"
70 id="loginButton"
71 text="Log In"
72
onclick="loginButton_OnClick"/>
73 </td>
74 </tr>
75 </table>
76 </p>
77 </form>
78 </body>
79 </html>
Listing 9.5 default.aspx
01 <%@ Import Namespace="System.Web" %>
02 <%@ Import Namespace="System.Web.UI.WebControls" %>
03 <%@ Import Namespace="System.Web.Security" %>
04
05 <html>
06 <head>
07 <title>Secure Page</title>
08 <script runat="server" language="VB">
09 Public Sub signoutButton_OnClick(Sender As
Object, _
10 E As EventArgs)
11 FormsAuthentication.SignOut()
12
13 Response.Redirect("/login.aspx")
14
15 End Sub
16 </script>
17 </head>
18 <body>
19 <p>
20 <b>Welcome</b>
21 </p>
22 <p>
23 This is a secure page.
24 <br>
25 <asp:linkButton runat="server"
26 id="signoutButton"
27 text="Sign out"
28
onclick="signoutButton_OnClick"/>
29 </p>
30 </body>
31 </html>

اين كد ها را تو صفحه هات اعمال كن جواب ميده
تو webconfig علاوه بر user مي توني role هم تعريف كني و allow بهش بدي

hamid1988
پنج شنبه 04 تیر 1388, 10:14 صبح
سلام


Listing 9.3 Web.config
01 <configuration>
02 <system.web>
03
04 ...
05
06 <authentication mode="Forms">
07 <forms name=".ASPXAUTH"
08 loginurl="/login.aspx"
09 protection="Encryption">
10 <credentials passwordformat="SHA1">
11 <user name="Ron"
password="AB54B7H109AE41F0"/>
12 <user name="Scott"
password="0F14AE901H7B45BA"/>
13 </credentials>
14 </forms>
15 </authentication>
16
17 <authorization>
18 <allow users="Ron,Scott"/>
19 <deny users="*"/>
20 </authorization>
21
22 ...
23
24 </system.web>
25 </configuration>
Listing 9.4 login.aspx
01 <%@ Import Namespace="System.Web" %>
02 <%@ Import Namespace="System.Web.UI.WebControls" %>
03 <%@ Import Namespace="System.Web.Security" %>
04
05 <html>
06 <head>
07 <title>Login Page</title>
08 <script runat="server" language="VB">
09 Public Sub loginButton_OnClick(Sender As
Object, _
10 E As EventArgs)
11
12 If
FormsAuthentication.Authenticate(UserName.Text, _
13
Password.Text) Then
14
15
FormsAuthentication.RedirectFromLoginPage(UserName .Text,
_
16
Persist.Checked)
17 Else
18
19 ErrorLabel.Text = "Invalid
Username/Password combination"
20
21 End If
22
23 End Sub
24
25 </script>
26 </head>
27 <body>
28 <form runat="server">
29 <p>
30 <b>Please Log in</b>
31 </p>
32 <hr>
33 <p>
34 The resource you have requested requires a
valid login.
35 Please provide your username and password
below.
36 </p>
37 <p>
38 <asp:label runat="server"
39 id="ErrorLabel"/>
40 </p>
41 <p>
42 <table>
43 <tr>
44 <td>Username:</td>
45 <td>
46 <asp:textbox runat="server"
47 id="UserName"
48 TextMode="SingleLine"/>
49 </td>
50 </tr>
51 <tr>
52 <td>Password:</td>
53 <td>
54 <asp:textbox runat="server"
55 id="Password"
56 TextMode="Password"/>
57 </td>
58 </tr>
59 <tr>
60 <td colspan="2">
61 <asp:checkbox runat="server"
62 id="Persist"
63 Text="Keep me logged in
between
64 browser restarts"/>
65 </td>
66 </tr>
67 <tr>
68 <td colspan="2">
69 <asp:linkButton runat="server"
70 id="loginButton"
71 text="Log In"
72
onclick="loginButton_OnClick"/>
73 </td>
74 </tr>
75 </table>
76 </p>
77 </form>
78 </body>
79 </html>
Listing 9.5 default.aspx
01 <%@ Import Namespace="System.Web" %>
02 <%@ Import Namespace="System.Web.UI.WebControls" %>
03 <%@ Import Namespace="System.Web.Security" %>
04
05 <html>
06 <head>
07 <title>Secure Page</title>
08 <script runat="server" language="VB">
09 Public Sub signoutButton_OnClick(Sender As
Object, _
10 E As EventArgs)
11 FormsAuthentication.SignOut()
12
13 Response.Redirect("/login.aspx")
14
15 End Sub
16 </script>
17 </head>
18 <body>
19 <p>
20 <b>Welcome</b>
21 </p>
22 <p>
23 This is a secure page.
24 <br>
25 <asp:linkButton runat="server"
26 id="signoutButton"
27 text="Sign out"
28
onclick="signoutButton_OnClick"/>
29 </p>
30 </body>
31 </html>

اين كد ها را تو صفحه هات اعمال كن جواب ميده
تو webconfig علاوه بر user مي توني role هم تعريف كني و allow بهش بدي

اگه بخوام UserName و PassWord رو از دیتابیس بخونم چی؟...چی کار باید بکنم؟

raziee
پنج شنبه 04 تیر 1388, 12:54 عصر
سلام. ببین اینها به دردت میخوره؟

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Login.aspx.cs" Inherits="Login" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Login Page</title>
<link href="StyleSheet.css" rel="stylesheet" type="text/css" />
</head>
<body style="font-family:Tahoma; font-size:8pt; text-align:center; background-color:#EEFFFF" dir="rtl">
<form id="form1" runat="server">
<div style="width:220px;">
<asp:MultiView ID="MultiViewLogin" runat="server" ActiveViewIndex="0">
<asp:View ID="ViewLogin" runat="server">
<fieldset>
<legend>ورود کاربری</legend>
<table>
<tr>
<td>نام کاربری :</td>
<td>
<asp:TextBox ID="txtUserName" runat="server" Font-Names="tahoma"
Font-Size="8pt" Width="120px"></asp:TextBox>
<asp:RequiredFieldValidator ID="rfvUserName" runat="server" ErrorMessage="*"
ControlToValidate="txtUserName"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td>گذرواژه :</td>
<td>
<asp:TextBox ID="txtPassword" runat="server" Font-Names="tahoma"
Font-Size="8pt" TextMode="Password" Width="120px"></asp:TextBox>
<asp:RequiredFieldValidator ID="rfvPassword" runat="server" ErrorMessage="*"
ControlToValidate="txtPassword"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td colspan="2">
<asp:CheckBox ID="chkMember" runat="server" Text="مرا به خاطر بسپار" />
</td>
</tr>
<tr>
<td colspan="2">
<asp:Label ID="lblError" runat="server" ForeColor="Red"
Text="نام کاربری و یا گذرواژه صحیح نمیباشد." Visible="False"></asp:Label>
</td>
</tr>
<tr>
<td colspan="2">
<asp:Button ID="btnLogin" runat="server" Font-Names="tahoma" Font-Size="8pt"
Text="ورود" Width="100px" onclick="btnLogin_Click" />
</td>
</tr>
<tr>
<td colspan="2">
<asp:LinkButton ID="lbtnForgetPass" runat="server">فراموش کردن گذرواژه</asp:LinkButton>
</td>
</tr>
</table>
</fieldset>
</asp:View>
<asp:View ID="ViewForgetMe" runat="server">
</asp:View>
</asp:MultiView>
</div>
</form>
</body>
</html>



protected void btnLogin_Click(object sender, EventArgs e)
{
lblError.Visible = false;
string UserName = txtUserName.Text.Trim().ToString();
string Password = txtPassword.Text.Trim().ToString();
MemberMe myMember = new MemberMe();
if (myMember.GetMemberAuthentication(UserName, Password))
FormsAuthentication.RedirectFromLoginPage(UserName , chkMember.Checked);
else
lblError.Visible = true;
}
یه کلاس برای لاگین درست کرده بودم که کد مهمش این بود.

public bool GetMemberAuthentication(string UserName, string Password)
{
using (SqlConnection myCon = new SqlConnection(ConfigurationManager.ConnectionStrin gs["TestDB"].ConnectionString.ToString()))
{
bool RetValue = false;
SqlCommand myCom = new SqlCommand();
myCom.Connection = myCon;
myCom.CommandType = CommandType.StoredProcedure;
myCom.CommandText = "sp_Login";
myCom.Parameters.AddWithValue("@UserName", UserName);
myCom.Parameters.AddWithValue("@Password", Password);
SqlDataAdapter myDA = new SqlDataAdapter();
myDA.SelectCommand = myCom;
DataTable myDT = new DataTable();
myCon.Open();
myCom.ExecuteNonQuery();
myDA.Fill(myDT);
myCon.Close();
DataView myDV = new DataView(myDT);
if (myDV.Count == 1)
RetValue = true;
return RetValue;
}
}

mononok
پنج شنبه 04 تیر 1388, 13:06 عصر
اينم كد mononok:


Dim connstr AsString
connstr = "Data Source=MONONOK\NSERVER;Initial Catalog=atragin;User ID=sa;password=123456"
Dim conn As SqlConnection = New SqlConnection(connstr)
Try
conn.Open()
Dim cmdstr AsString = "select * from user2 where username='" + t1.Text + "'and password='" + t2.Text + "'"
Dim cmd As SqlCommand = New SqlCommand(cmdstr, conn)
Dim reader As SqlDataReader = cmd.ExecuteReader
If reader.Read Then
FormsAuthentication.RedirectFromLoginPage(t1.Text, False)
Response.Redirect("default.aspx")
Else
l1.Text = "Please Try Again"
EndIf
Catch ex As Exception
l1.Text = ex.Message
EndTry

اين تيكه رو هم در بالاترين قسمت صفحه كدهات درج كن البته اين تو vb هست


Imports System.Data.SqlClient

datasource هم مي توني از قسمت view>server explorer ببيني
روي connection كليك راست كن add new وبعد از advanced كه روي فرم هست مي توني datasource رو كپي كني اگه sql رمز داره هم مثل كد من password رو آخرش ذكر كن چون معمولا تو datasource نميياره ولي مي خواد user2 هم در اينجا اسم جدولمه بعد از اتصال هم به صفحه خواسته شده ميره و تو اون صفحه مي توني اين كد رو حتي بذاري تا نام كاربريت رو در اونجا ببيني مثلا بگه سلام فلاني...


l1.Text = User.Identity.Name

در واقع اون قسمت از كد اصلي لاگين

FormsAuthentication.RedirectFromLoginPage(t1.Text, False)

به خاطر همينه كه در صفحه بعدي هم شناخته شي
و در نهايت يه جدول درست كن كه مثلا فيلدهايusername و password رو داره كه اين كد در اوجا جست و جو مي كنه اگه بود به صفحه default هدايتت مي كنه
راستي اينم به webconfig بايد اضافه كني


<authentication mode="Forms">
<forms loginUrl="/home.aspx" >
</forms>
</authentication>

:لبخندساده:

saeidnor
پنج شنبه 04 تیر 1388, 15:13 عصر
برا ساخت Database فایل SQLQuery1.sql رو اجرا کن

hobab-theme
پنج شنبه 04 تیر 1388, 17:47 عصر
دوست عزیز اگه بازم جواب نگرفتین بگید تا من صفحه Login خودم رو براتون آپلود کنم
البته با جواب دوستان فکر نکنم دیگه مشکلی داشته باشید

hamid1988
پنج شنبه 04 تیر 1388, 18:05 عصر
دوست عزیز اگه بازم جواب نگرفتین بگید تا من صفحه Login خودم رو براتون آپلود کنم
البته با جواب دوستان فکر نکنم دیگه مشکلی داشته باشید

اگه آپلود کنید ممنون می شم!
لطفاَ با دیتابیس Access باشه....

hobab-theme
جمعه 05 تیر 1388, 00:29 صبح
من کد صفحه login خودم رو هم برای دیتابیس SqlServer و هم Access آپلود کردم
-----------------
توضیحات :
توی این کدی که من واسه خودم نوشتم ابتدا توی واقعه لود صفحه بررسی میکنه ببینه آیا کوکی با نام CheckLoginMembers تو سیستم کاربر وجود داره یا نه ؟
اگر این کوکی وجود داشت که کنترل پنل با آی دی pnlUserOn به نمایش در میاد و در همین راستا پنل pnlUserOff غیر قابل نمایش میشود
توضیحات تکمیلی :
پنل pnlUserOn حاوی یک پیام است که نام کاربری را از کوکی مذکور بیرون میکشد و به کاربر خوش آمد میگه و میگه که نیازی به ورود مجدد اطلاعات نداره و یه لینک هم نمایش میده تا کاربر مستقیم به کنترل پنلش بره
پنل pnlUserOff حاوی فرمی است با دو فیلد Username و Password که این فیلدها اعتبار سنجی شدن تا اطمینان حاصل شود که کاربر حتماً اطلاعات خواسته شده رو وارد میکنه
در ضمن یه چک باکس هم با متن "مرا به خاطر بسپار" تعبیه شده . در صورتی که کاربر این رو انتخاب کنه دیگه تو ورود های بعدی به سایت احتیاجی به وارد کردن اطلاعات کاربری خود ندارد.( این چک باکس همون کوکی CheckLoginMembers رو ایجاد میکنه )
-------------------------------
خوب این یه کد ساده هست و فکر نمیکنم دیگه به توضیحات بیشتری نیاز داشته باشه

آها تا یادم نرفته بگم که در صورتی که کاربر لاگ این کنه بدون تیک زدن چک باکس ، کوکی CheckLginMembers ایجاد خواهد شد ولی به محض اینکه پنجره مرورگر خودش رو ببنده این کوکی از بین میره
-------------------------------
من تو صفحاتم از مستر پیج استفاده کردم . شما میتونید کدهای اصلی برنامه رو انتخاب و تو قسمت مورد نظرتون کپی کنید تا با طراحی خودتون ست بشه
در ضمن در صورتی که از این نوع شناسایی استفاده میکنید باید تو صفحاتی که نیاز به لاگ این کاربر برا دیدن داره ابتدا چک کنید ببینید کوکی مذکور وجود داره یا خیر
-------------------------------
اگه بازم مشکلی بود در خدمتم
یا حق

hamid1988
جمعه 05 تیر 1388, 01:00 صبح
دست همگی درد نکنه!
بالاخره موفق شدم...!

hamid1988
جمعه 05 تیر 1388, 01:15 صبح
من لاگینم را به دو صورت نوشتم...
بعد ازتشخیص وجود کاربر در دیتابیس:
1) همه ی تعیین هویت ها با کوکی صورت می گیره و هیچ کدی در Web.Config اضافه نکردم.
2) از Authentication ، استفاده کردم و کوکی رو خود َAuthentication درست می کنه.