Аутентификация по формам для папок с разными страницами входа - PullRequest
1 голос
/ 02 марта 2011

enter image description here

Проблема заключается в следующем:Если посетитель попытается получить доступ к странице в папке администратора, он должен быть перенаправлен на страницу входа, расположенную в папке администратора, здесь я возьму его имя пользователя и пароль, а затем проверю это в таблице SQL Server, если он аутентифицирован, то он будетперенаправлен на страницу по умолчанию, и он может получить доступ к любой странице в папке администратора, но не к любой странице в папке пользователяЗдесь важно одно: это страница входа в папку администратора и страница входа в папку пользователя.Тот же сценарий для папки пользователяПожалуйста, скажите мне, как правильно достичь этой функциональностиПожалуйста, объясните свой ответ

Ответы [ 2 ]

1 голос
/ 02 марта 2011

Если вы используете аутентификацию по формам / членству, нет необходимости иметь две разные страницы входа в систему, я не думаю, что это даже возможно - вместо этого используйте одну страницу входа и по-разному перенаправляйте в зависимости от того, является ли ваш пользователь администратором"или обычный пользователь.Проверка подлинности с помощью форм обеспечивает встроенный механизм для этого, используя Roles .

. Для включения ролей вам необходимо добавить раздел roleManager в ваш web.config, то есть:

<roleManager enabled="true" defaultProvider="SqlRoleManager">
    <providers>
        <add name="SqlRoleManager" type="System.Web.Security.SqlRoleProvider" connectionStringName="LocalSqlServer" applicationName="/"/>
    </providers>
</roleManager>

Затем в ваших разделах аутентификации вы можете защитить страницы от обычных пользователей, но разрешить администраторам:

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

В коде очень легко проверить, находится ли пользователь в роли администратора (т.е. когда решается, куда перенаправить).):

if (Membership.ValidateUser(user, pass) && Roles.IsUserInRole(user, "Admin"))
{
    //...
}
1 голос
/ 02 марта 2011

На каждой странице в папке администратора, в качестве первой строки в коде C # страницы, проверьте наличие переменной «IsAllowedAdmin» в данных сеанса. Если его там нет, выполните ручное перенаправление на страницу входа администратора.

При входе на страницу входа администратора - если пользователи аутентифицируются нормально, - затем сохраните переменную IsAllowedAdmin в true для данных сеанса.

А потом есть похожая вещь на странице пользователя ....

Итак ... на страницах администратора вы можете иметь ...

protected void Page_Load(object sender, EventArgs e)
{
    if (Session["AdminOk"] != null)
    {   
        bool bAdminOk = false;
        try
        {
            bAdminOk = (bool) Session["AdminOk"];
        }
        catch
        {
        }
        if (!bAdminOk)
        {   
            Response.Redirect("~/Admin/login.aspx");
        }

    }
}

А затем аналогичные (но с другим именем переменной сеанса) для пользовательских страниц ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...