PDA

View Full Version : سوال: چطور کنترل createuser رو درست کنم تا بتونم به جای txtbox سوال امنیتی یه لیست کشویی از چند سوال بزارم



dontspeak
جمعه 30 اردیبهشت 1390, 18:03 عصر
سلام.
من می خوام به جای اینکه توی کنترل createuser از کنترل تکس باکس برای سوال امنیتی استفاده کنم. یعنی خودش سوالشو بنویسه. یه کنترل dropdown بزارم و از بین چند سوال یکی رو انتخاب کنه. چکار باید بکنم؟

eshpilen
شنبه 31 اردیبهشت 1390, 19:38 عصر
<%@ page language="C#"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>CreateUserWizard Sample</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:createuserwizard id="Createuserwizard1" runat="server" LoginCreatedUser="true">
<wizardsteps>
<asp:createuserwizardstep ID="Createuserwizardstep1" runat="server" title="Sign Up for Your New Account">
<contenttemplate>
<table border="0">
<tr>
<td>
<table border="0" style="height: 100%; width: 100%;">
<tr>
<td align="center" colspan="2">
Sign Up for Your New Account</td>
</tr>
<tr>
<td align="right">
<asp:label runat="server" associatedcontrolid="UserName" id="UserNameLabel">
User Name:</asp:label></td>
<td>
<asp:textbox runat="server" ID="UserName"></asp:textbox>
<asp:requiredfieldvalidator runat="server" controltovalidate="UserName" tooltip="User Name is required."
id="UserNameRequired" validationgroup="Createuserwizard1" errormessage="User Name is required.">
*</asp:requiredfieldvalidator>
</td>
</tr>
<tr>
<td align="right">
<asp:label runat="server" associatedcontrolid="Password" id="PasswordLabel">
Password:</asp:label></td>
<td>
<asp:textbox runat="server" textmode="Password" id="Password"></asp:textbox>
<asp:requiredfieldvalidator runat="server" controltovalidate="Password" tooltip="Password is required."
id="PasswordRequired" validationgroup="Createuserwizard1" errormessage="Password is required.">
*</asp:requiredfieldvalidator>
</td>
</tr>
<tr>
<td align="right">
<asp:label runat="server" associatedcontrolid="ConfirmPassword" id="ConfirmPasswordLabel">
Confirm Password:</asp:label></td>
<td>
<asp:textbox runat="server" textmode="Password" id="ConfirmPassword"></asp:textbox>
<asp:requiredfieldvalidator runat="server" controltovalidate="ConfirmPassword" tooltip="Confirm Password is required."
id="ConfirmPasswordRequired" validationgroup="Createuserwizard1" errormessage="Confirm Password is required.">
*</asp:requiredfieldvalidator>
</td>
</tr>
<tr>
<td align="right">
<asp:label runat="server" associatedcontrolid="Email" id="EmailLabel">
Email:</asp:label></td>
<td>
<asp:textbox runat="server" id="Email"></asp:textbox>
<asp:requiredfieldvalidator runat="server" controltovalidate="Email" tooltip="Email is required."
id="EmailRequired" validationgroup="Createuserwizard1" errormessage="Email is required.">
*</asp:requiredfieldvalidator>
</td>
</tr>
<tr>
<td align="right">
<asp:label runat="server" associatedcontrolid="Question" id="QuestionLabel">
Security Question:</asp:label></td>
<td>
<asp:DropDownList runat="server" id="Question">
<asp:ListItem>Security question 1</asp:ListItem>
<asp:ListItem>Security question 2</asp:ListItem>
<asp:ListItem>Security question 3</asp:ListItem>
</asp:DropDownList>
<asp:requiredfieldvalidator runat="server" controltovalidate="Question" tooltip="Security question is required."
id="QuestionRequired" validationgroup="Createuserwizard1" errormessage="Security question is required.">
*</asp:requiredfieldvalidator>
</td>
</tr>
<tr>
<td align="right">
<asp:label runat="server" associatedcontrolid="Answer" id="AnswerLabel">
Security Answer:</asp:label></td>
<td>
<asp:textbox runat="server" id="Answer"></asp:textbox>
<asp:requiredfieldvalidator runat="server" controltovalidate="Answer" tooltip="Security answer is required."
id="AnswerRequired" validationgroup="Createuserwizard1" errormessage="Security answer is required.">
*</asp:requiredfieldvalidator>
</td>
</tr>
<tr>
<td align="center" colspan="2">
<asp:comparevalidator runat="server" display="Dynamic" errormessage="The Password and Confirmation Password must match."
controltocompare="Password" controltovalidate="ConfirmPassword" id="PasswordCompare"
validationgroup="Createuserwizard1">
</asp:comparevalidator>
</td>
</tr>
<tr>
<td align="center" colspan="2" style="color: Red;">
<asp:literal runat="server" enableviewstate="False" id="FailureText">
</asp:literal>
</td>
</tr>
</table>
</td>
</tr>
</table>
</contenttemplate>
</asp:createuserwizardstep>
<asp:completewizardstep ID="Completewizardstep1" runat="server" title="Complete">
<contenttemplate>
<table border="0">
<tr>
<td>
<table border="0" style="height: 100%; width: 100%;">
<tr>
<td align="center" colspan="2">
Complete</td>
</tr>
<tr>
<td>
Your account has been successfully created.</td>
</tr>
<tr>
<td align="right" colspan="2">
</td>
</tr>
</table>
</td>
</tr>
</table>
</contenttemplate>
</asp:completewizardstep>
</wizardsteps>
</asp:createuserwizard>
</div>
</form>
</body>
</html>

تاجاییکه تست کردم درست کار میکنه.
ضمنا این کد مثال از خود رفرنس MSDN بود که فقط کنترل با آیدی Question رو که یک TextBox بود با یک DropDownList عوض کردم.
فکر کنم کدش رو از این صفحه برداشتم: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.createuserwizard.aspx

dontspeak
شنبه 31 اردیبهشت 1390, 20:10 عصر
ضمنا این کد مثال از خود رفرنس MSDN بود که فقط کنترل با آیدی Question رو که یک TextBox بود با یک DropDownList عوض کردم.
ممنون از جوابتون
یه سوالی که واسم پیش اومده اینه که چطور تشخیص میده که به جای تکس باکس از dropdownlist آیتم خودشو بگیره؟ چون من چیزی در این مورد توی کدهای بالا ندیدم.

در مورد پسورد ریکاوری هم میشه توضیح بدید؟ چطور باید این کنترل رو ست کنم تا بتونم ریکاوری کنم؟ یه سرچی توی msdn زدم ولی از اونجایی که نمی دونم دقیقا دنبال چی باید بگردم چیزی پیدا نکردم.

dontspeak
شنبه 31 اردیبهشت 1390, 21:35 عصر
یه چیزایی توی MSDN پیدا کردم که فقط گفته بود توی WEB.CNFIG این تغییراتو بده. یعنی من باید فقط کنترل passwordrecovery رو تو صفحه بزارم و این کدو به همین صورت وارد کنم و تمام؟

<configuration>
<location path="RecoverPassword.aspx">
<system.web>
<authorization>
<allow users="?" />
</authorization>
</system.web>
</location>

<system.web>
<authentication mode="Forms" >
<forms loginUrl="UserLogin.aspx" />
</authentication>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</configuration>

eshpilen
یک شنبه 01 خرداد 1390, 08:06 صبح
ممنون از جوابتون
یه سوالی که واسم پیش اومده اینه که چطور تشخیص میده که به جای تکس باکس از dropdownlist آیتم خودشو بگیره؟ چون من چیزی در این مورد توی کدهای بالا ندیدم.

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


در مورد پسورد ریکاوری هم میشه توضیح بدید؟ چطور باید این کنترل رو ست کنم تا بتونم ریکاوری کنم؟ یه سرچی توی msdn زدم ولی از اونجایی که نمی دونم دقیقا دنبال چی باید بگردم چیزی پیدا نکردم.

باید برم خونه تست کنم چون اینجا که الان هستم نرم افزارهای مورد نیازش نصب نیست.
بطور کلی هم شما از کنترل PasswordRecovery (http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.passwordrecovery.aspx) استفاده میکنید خب. امتحانش کردید؟

dontspeak
یک شنبه 01 خرداد 1390, 12:13 عصر
باید برم خونه تست کنم چون اینجا که الان هستم نرم افزارهای مورد نیازش نصب نیست.
بطور کلی هم شما از کنترل PasswordRecovery (http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.passwordrecovery.aspx) استفاده میکنید خب. امتحانش کردید؟
خوب امتحان که کردم و لی چون نمی دونستم چه تنظیماتی باید وارد کنم موفق نشدم مثلا نمی دونم توی asp.net configuration چه تنظیماتی رو وارد کنم. دیشبم تا 2.5 بیدار بودم که یه فیلم زبان اصلی گیر بیارم ولی آخرش از Uتیوب یه فیلم گیر آوردم که خوب بود ولی کیفیتش کم بود

eshpilen
یک شنبه 01 خرداد 1390, 13:35 عصر
پیام خطاش چی بود؟
والا منم چیز بیشتری نمیدونم و فکر نمیکنم بتونم کامل تستش کنم، چون باید سرور ایمیل نصب باشه و یا روی هاست تست بشه.
فکر نمیکنم کار خاصی لازم باشه جز اینکه تنظیمات SMTP رو در فایل Web.Config انجام بدید. البته اگر نیاز باشه.
ظاهرا یه چیزی شبیه اینه:

<system.net>
<mailSettings>
<smtp from="">
<network host="smtp.xxx.com" password="" userName=""/>
</smtp>
</mailSettings>
</system.net>
بجای xxx.com آدرس دامین خودتون رو بذارید.
اگر نام کاربری و پسورد هم لازمه اونا رو هم تعیین کنید.

dontspeak
یک شنبه 01 خرداد 1390, 14:32 عصر
خیلی خیلی ممنون. منم فکر کنم همین باشه. اون کلیپ آموزشی که گفنم، با کیفیتشو خودم داشتم. الان بین کلیپام پیداش کردم. اونم همین کارا رو کرد ولی از طریق asp.net configuration

dontspeak
یک شنبه 01 خرداد 1390, 16:38 عصر
آقا تست کردم. حل شد کدشو میزارم که بقیه هم استفاده کنند

<system.net>
<mailSettings>
<smtp from="xxx@xxx.xx">
<network host="mail.xxx.xx" password="123456" userName="xxx@xxx.xx" />
</smtp>
</mailSettings>
</system.net>
که یوزرش میشه ایمیل شما و پسوردشم پسورد ایمیلتونه. مثلا test@test.com و پسوردم 123456 . فکر کنم بسته به نوع هاست اون قسمت هاست فرق میکنه یعنی مثلا مال من شد mail.xxx.xx و ممکنه مال یکی دیگه smtp.xxx.xx باشه.

eshpilen
یک شنبه 01 خرداد 1390, 19:11 عصر
ایول. وقتی آدم میبینه طرفش خنگ یا تنبل نیست و یه چیزی رو بالاخره به نتیجهء درست و حسابی میرسونه و ضمنا تجربش رو در اختیار دیگران هم قرار میده خیلی کیف میکنه!!