Member 10379103 Ответов: 2

Решения по сравнению с 2013 годом создается локально сохранять информацию пользователей?


Я создал проект, который запускает хранимую процедуру для определения разрешений пользователя и того, что он должен видеть.

Я протестировал свой сайт локально, очистил и построил решение, опубликовал его на M desktop, а затем переместил файлы на тестовый сервер.

Все работает. Я изменил свои собственные разрешения пользователя, снова вошел на тестовый сервер, но он все еще показывает мои предыдущие разрешения!

Я вывел user.identitiy на страницу, попросил другого пользователя войти в систему, увидел правильное имя пользователя, но все равно мои разрешения!

Я использовал тройную проверку и проверил, что моя пользовательская информация не является хардкорной в сохраненном вызове proc, и это не так.

Есть ли какой-то параметр, который я пропустил, когда создавал и публиковал свое решение, который переопределяет информацию об имени пользователя??

Что я уже пробовал:

Я искал в Google, проверял свой код, искал эту базу знаний.

2 Ответов

Рейтинг:
1

Matt T Heffron

Я предполагаю, что код хранимой процедуры, который проверяет разрешения есть жучок!
Вы сказали, что "проверили мой код", но никогда не заявляли, что пытались и смогли его проверить когда-либо опознал что-нибудь Кроме как ваши разрешения!

Можете ли вы проверить так много в вашей локальной системе?
Затем повторите попытку с переходом на тестовый сервер.
Если это не удастся, то я предлагаю изучить соответствующие таблицы БД для вашего не вы пользователь и вручную имитирующая (на бумаге!) хранимую процедуру тот пользователь.

Это будет просто хорошая, старомодная отладка!


Рейтинг:
0

Member 10379103

Мэтт,

Я действительно попытался проверить, что он идентифицировал что-либо, кроме моих разрешений.

Ниже приведен код моей главной страницы. aspx и моей главной страницы.aspx.cs. Это довольно простая логика, которая прекрасно работает, когда главная страница. aspx загружается на рабочий сервер, но не распознает изменения на тестовом сервере - разрешения, похоже, по умолчанию соответствуют моим собственным. Я проверил, чтобы убедиться, что я случайно не передавал локальные клиентские элементы управления, когда я публиковался со своего рабочего стола на тестовый сервер, и я не был:

Page Name is Main.aspx

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Main.aspx.cs" Inherits="MyWebPage.WebForm2"%>
<%@ Register assembly="Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" namespace="Microsoft.Reporting.WebForms" tagprefix="rsweb" %>

This is on the Main.aspx.cs page:

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.WebControls;
using System.Security.Principal;
using System.Data.SqlClient;
using System.Data.Sql;
using System.Configuration;

namespace MyWebPage.Main
{

    public partial class WebForm2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {

                var username = User.Identity.Name;
                

                SqlConnection MyConnection = new SqlConnection("server=ServerName\\sql2008;database=DatabaseName;Trusted_Connection=True;");

                SqlDataAdapter MyDataAdapter = new SqlDataAdapter("SP_Name", MyConnection);

                MyDataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure;

                MyDataAdapter.SelectCommand.Parameters.Add(new SqlParameter("@username", SqlDbType.VarChar, 40));

                MyDataAdapter.SelectCommand.Parameters["@username"].Value = (username);

                MyDataAdapter.SelectCommand.Parameters.Add(new SqlParameter("@userrole", SqlDbType.VarChar, 40));

                MyDataAdapter.SelectCommand.Parameters["@userrole"].Direction = ParameterDirection.Output;

                DataSet DS = new DataSet();

                MyConnection.Open();

                MyDataAdapter.Fill(DS, "UsersRole");

                Session.Add("Role", DS);

                string userrole = null;

                userrole = MyDataAdapter.SelectCommand.Parameters[1].Value.ToString();

                string role1 = "Admin";
                string role2 = "User";
                string role3 = "Managers";
                string role4 = "PowerUser";
             
              

                //TextBox1.Text = MyDataAdapter.SelectCommand.Parameters[1].Value.ToString();

                //Label1.Text = MyDataAdapter.SelectCommand.Parameters[1].Value.ToString();


                if (userrole == role1)
                {
                    Server.Transfer("Main.aspx", true);
                }
                else if (userrole == role2)
                {
                    Server.Transfer("UserMainPage.aspx", true);
                }
                else if (userrole == role3)
                {
                    Server.Transfer("ManagerMainPage.aspx", true);
                }
                else if (userrole == role4)
                {
                    Server.Transfer("PowerUserMainPage.aspx", true);
                }
               
                else
                {
                    Server.Transfer("NewUserMainPage.aspx", true);
                }


                MyConnection.Close();
            }
        }

       
        }

        
    }