• Привет, Гость!
  • Войти
  • Регистрация
  • Записи
  • Форумы
  • Люди
  • Файлы
  • Работа
  • Технологии

Аутентификация

Все форумы  Поиск  Правила  Помощь 
 Активные темы  Темы без ответов
Привет, гость! Войти
Форумы GotDotNet.Ru » Windows Presentation Foundation » Аутентификация
Страницы: 1
RSS
Аутентификация
markus2033
Сообщений: 244 Регистрация: 27.09.2009
#1
09.03.2010 8:21
Всем привет. Мне нужно реализовать раграничение прав доступа в приложении SL3
Пользователь входит в приложение через форуму , где вводит логин и пароль.
В базе данных такая струуктура, что на один логин приходится несколько долностей. каждая долность определяет куда можно в программе заходить, а куда нет.
Хотелось бы реализовать так, чтобы пользователю на основании его прав определялось видна или не видна ему кнопка для входа в другую форму (или активна, не активна)
Как это сделать?

SL3,Ria Services
 
 
outcoldman
Сообщений: 2212 Регистрация: 17.08.2006
#2
09.03.2010 23:21
Тут сильно то не зависит от того какую технологию вы используете. В зависимости от роли неотображать кнопку - это еще не выход. Нужно так же защищать на сервере методы, которые пользователь не может вызвать, так как не обязательно иметь Silverlight приложения чтобы вызывать методы сервера, и данные могут быть подставлены.

По поводу интерфейса, то тут все просто и зависит от вашей реализации. Если наборы действий и разрешений вы где то храните, то можно сделать свой набор контролов, отнаследовав их от необходимых, например SecuryButton и т.п., которые будут проверять возможно ли пользователю нажимать на кнопку или нет, параметры-действия биндить на кнопку в XAML, получиться, что-то вроде
<SecuryButton Action="DeleteUser" Command="{...}">Click Me</SecuryButton>
Соответственно нужно просто проверить, DeleteUser дано право пользователю или нет.
Можно и не наследоваться от контролов, а все реализовать на Attached Properties.
[Мой сайт/блог]
 
 
markus2033
Сообщений: 244 Регистрация: 27.09.2009
#3
10.03.2010 9:13
а можно как нибудь так?
<Button Visibility="{Binding ......}" />
привязаться к функции которая выдает true или false
?
 
 
markus2033
Сообщений: 244 Регистрация: 27.09.2009
#4
10.03.2010 13:01
я пробую вот что делать
делаю такой класс

using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace SilverlightApplication12.Views
{
    public class Auth
    {
        public Auth()
        {
                        
        }

        public bool proverka()
        {
            return false;
        }
    }
}


в окне, в ресурсах объявляю
xmlns:src="clr-namespace:SilverlightApplication12.Views"
    
<UserControl.Resources>
        <src:Auth x:Key="Auth"/>    
</UserControl.Resources>


делаю такую кнопку
<Button Content="11111" IsEnabled="{Binding Source={StaticResource Auth},Path=proverka,Mode=TwoWay}"></Button>

Но кнопка все равно остается активной...то есть моя задумка не работает. Почему?
 
 
outcoldman
Сообщений: 2212 Регистрация: 17.08.2006
#5
10.03.2010 13:32
Хм... Биндить можно только к свойствам.
[Мой сайт/блог]
 
 
markus2033
Сообщений: 244 Регистрация: 27.09.2009
#6
10.03.2010 14:15
я не силен в классах но "proverka" это ведь наверно так же и свойство класса?
 
 
outcoldman
Сообщений: 2212 Регистрация: 17.08.2006
#7
10.03.2010 14:31
нет, Properties (C# Programming Guide)
[Мой сайт/блог]
 
 
markus2033
Сообщений: 244 Регистрация: 27.09.2009
#8
10.03.2010 14:43
Вот так работает
namespace SilverlightApplication12.Views
{
    public class Auth
    {
        public Auth()
        {
                        
        }

        public bool proverka
        {
            get { 
                return false; 
                }
        }
        
    }
}
 
 
markus2033
Сообщений: 244 Регистрация: 27.09.2009
#9
10.03.2010 15:25
а передать Name кнопки сюда я смогу?
 
 
outcoldman
Сообщений: 2212 Регистрация: 17.08.2006
#10
10.03.2010 16:07
куда сюда? И зачем?
[Мой сайт/блог]
 
 
markus2033
Сообщений: 244 Регистрация: 27.09.2009
#11
10.03.2010 16:25
в get
для того чтобы понять для какой кнопки нужно выбрать значение её доступности (True или False)
 
 
outcoldman
Сообщений: 2212 Регистрация: 17.08.2006
#12
10.03.2010 16:31
Нет, так нельзя.
[Мой сайт/блог]
 
 
markus2033
Сообщений: 244 Регистрация: 27.09.2009
#13
10.03.2010 21:57
Попробывал вот так
создал класс
public class Auth
    {
        DomainDataSourceView view;
        public Auth()
        {
            var context = new DomainService1();
            context.GetLD_activ_dolzhnQuery();
            var DS = new DomainDataSource();
            DS.DomainContext = context;
            DS.QueryName = "GetLD_activ_dolzhnQuery";
            DS.Load();
            view = DS.DataView;
        }

        public bool IsCanDo(string User, int Data)
        {
            bool s = false;
            foreach (LD_accaunt_fizlico em in view)
            {
                if (em.login_name == User)
                {
                    s = true;
                }
            }
            return s;
        }
    }

в классе окна инициализирую подготовленный класс
public partial class MainPage : UserControl
    {
        Auth newAuth=new Auth();
        public MainPage()
        {
            InitializeComponent();
            
        }
.....

а на загрузке формы
MyButton.IsEnabled = newAuth.IsCanDo("test",1);


Но коллекция логинов не успевает загрузиться. Если сделать MyButton.IsEnabled = newAuth.IsCanDo("test",1); на нажатие какой нибудь кнопки то коллекция уже загрузилась к этому моменту и MyButton блокируется как надо. Почему так?
 
 
outcoldman
Сообщений: 2212 Регистрация: 17.08.2006
#14
11.03.2010 14:23
Я с DomainDataSource не работал, но вроде метод Load должен загружать данные синхронно http://msdn.microsoft.com/en-us/libra...S.91).aspx
[Мой сайт/блог]
 
 
markus2033
Сообщений: 244 Регистрация: 27.09.2009
#15
11.03.2010 18:15
так оно так...
 
 
 
Страницы: 1
Форумы GotDotNet.Ru » Windows Presentation Foundation » Аутентификация
О сайте   Свяжитесь с нами   Версия для печати
Работает на 1С-Битрикс: Управление сайтом ASP.NET  |  Хостинг на Parking.Ru