PDA

View Full Version : سوال: مشکل در اجازه دسترسی به صفحات سایت



bftarane
چهارشنبه 02 شهریور 1390, 15:15 عصر
سلام. نماز و روزه هاتون قبول باشه.
من یه سایت طراحی کردم به صورت امتحانی.
در سایتم دو تا پوشه به اسم Admin و Support دارم.
دو تا role هم به اسم Admin و Support دارم که به 2 تا user تخصیص دادم.
در صفحه login اگر این دو کاربر login کنند به صفحات مربوط به خودشان redirect می شوند با استفاده از کد زیر
public partial class Login : System.Web.UI.Page
{
protected void LoginButton_Click(object sender, EventArgs e)
{
if (Roles.IsUserInRole((Login1.FindControl("UserName") as TextBox).Text, "Admin"))
{
Response.Redirect("~/Admin/Admin.aspx");
}
else if (Roles.IsUserInRole((Login1.FindControl("UserName") as TextBox).Text, "Support"))
{
Response.Redirect("~/Support/Support.aspx");
}
}
}

مشکل من اینه که می خوام در ابتدا سایت که بالا میاد صفحه Login نمایش داده بشه. یعنی تا کاربری login نکرده به سایت دسترسی نداشته باشه. ولی وقتی
<Deny roles="؟" />را در web.config استفاده میکنم دیگه بعد از زدن دکمه login این دو کاربر به صفحاتشون نمی روند و همان صفحه login را مشاهده می کنم.
در ضمن به این دو کاربر اجازه دسترسی به پوشه خودشان را داده ام.
لطفاً راهنمایی بفرمایید.
تشکر

sarapepors
چهارشنبه 02 شهریور 1390, 15:39 عصر
سلام البته با توضیحاتی که دادین من خیلی متوجه نشدم که چی کار کردین من خودم بالاگین خیلی مشکل داشتم ولی فکر میکنم روالش این طور هست که شما باید توی وب کانفیگ اصلی برنامه تون این کد رو بنویسید:


<authentication mode="Forms">
<forms name=".Authenticationmysite" loginUrl="Login.aspx" defaultUrl="Default.aspx" slidingExpiration="true" timeout="43200"></forms>
</authentication>

وقتی این کد رو مینویسید کاربر پس از لاگین میره به صفحه ای که در defaulturl تعیین کردین .
در ضمن باید هر کدام از اون صفحات رو بزراریدش تو یه فلدر جدا و در هر فلدر یه وب کانفیگ قرار بدید و بعد هم کد مربوط به دسترسی رو در authorization بنویسید.


<authorization>
<allow roles="customer"/>
<deny users="*"/>
</authorization>

البته role رو باید تعریف کنید .
http://barnamenevis.org/showthread.php?257287-آموزشی-ساخت-لاگین&highlight=login
اینو ببین بهت کمک میکنه

eof_programming
چهارشنبه 02 شهریور 1390, 15:48 عصر
اگه از ویزارد LoginUser خود ASP استفاده میکنی باید از رویداد LoggedIn کمک بگیری به صورت زیر:

protected void LoginUser_LoggedIn(object sender, EventArgs e)
{
if(User.Identity.Name=="Admin")
{
Response.Redirect("~/Admin/Admin.aspx");
}
else if(User.Identity.Name=="Support")
{
Response.Redirect("~/Support/Support.aspx");
}
}


اگرم منظورت اینه که آدرس یه صفحه دیگه رو وارد کنه باید تو Form_Load تمام صفحاتت با دستور زیر اعتبار کاربرو بسنجی:

if (Page.User.Identity.IsAuthenticated && Page.User.Identity.Name=="Admin") )
{

}

bftarane
چهارشنبه 02 شهریور 1390, 17:11 عصر
با تشکر از هر دو دوست گرامی.
مشکل حل شد.
eof_programming (http://barnamenevis.org/member.php?69419-eof_programming) گرامی ایراد کار من این بود که به جای این که از رویداد LoggedIn استفاده کنم در رویداد کلیک کنترل Login کدهایم را نوشته بودم.

sarapepors (http://barnamenevis.org/member.php?163142-sarapepors) گرامی من نمی دونستم defaulturl رو میشه در web.config تنظیم کرد. با کلیک راست در solutionexplorer و set as start page آشنا بودم ولی این روش رو بلد نبودم. خیلی سادست ولی خیلی عالیه.

farhud
چهارشنبه 02 شهریور 1390, 17:55 عصر
در وبلاگ زیر می تونی مطالب بیشتری درباره احراز هویت پیدا کنی:

http://asplearning.blogsky.com