Проверка входа на каждой странице ASP с использованием переменных сеанса (без форм / окон) аутентификации? - PullRequest
0 голосов
/ 13 апреля 2011

Я занимаюсь разработкой веб-сайта (в отличие от веб-приложения (поэтому нет глобального файла)).Я не хочу использовать формы / проверку подлинности Windows или куки.Так что переменные сессии [] - это вариант, который я выбрал.вопрос:Как проверить каждую страницу в приложении, существует ли эта переменная session []?Любой глобальный класс, где функция проверки может быть включена и вызываться каждый раз, когда выполняется page_load?

Ответы [ 2 ]

2 голосов
/ 13 апреля 2011

С технической точки зрения, если вы не используете состояние сеанса без файлов cookie, переменные сеанса становятся возможными с помощью файлов cookie, поэтому вы все равно косвенно их используете;)

Во всяком случае, это так же просто, как вы заявили. Вы можете просто включить некоторый код для проверки существования переменной сеанса в page_load каждой страницы:

if (Session["mySessionVar"] == null 
|| Session["mySessionVar"] IS_NOT_VALID) 
   Response.Redirect("/path/to/login/form/");

IS_NOT_VALID представляет собой некоторый логический тест для проверки того, что данные в переменной действительно являются данными.

Чтобы иметь «глобальный класс», вам необходимо создать новый класс страницы, который наследуется от Page и выполняет проверку в вашем новом классе Page_Load. Хитрость в том, что каждая страница, которую вы хотите проверить сессионной переменной, должна быть производной от вашего нового класса, а не от класса Page. Страницы, которые не нуждаются в проверке, могут наследоваться от Page как обычно. Например, что-то вроде этого:

public class MyPageClass : Page
{
    protected override void OnLoad(EventArgs e)
    {
        // Check to see if the session is valid 
        // and redirect to login if not
        if (Session["mySessionVar"] == null 
        || Session["mySessionVar"] IS_NOT_VALID) 
            Response.Redirect("/path/to/login/form/");

        base.OnLoad(e);
    }
}

public partial class MyLoginRequiredPage : MyPageClass
{
    .
    .
    .
}
0 голосов
/ 13 апреля 2011

Если у вас есть отдельная главная страница для домашней страницы / страницы профиля (отличается от логина), вы можете написать код только на главной странице page_load, поэтому вам не нужно писать код для действительного пользователя на каждой странице.Код:

if (Session["adminid"] == null || Session["adminid"].ToString() == "")
    {
        Response.Redirect("adminlogin.aspx");
    }

Даже вы можете также использовать файл global.asax, как сказал Вакас Раджа.

Надеюсь, это поможет.

...