Użytkownik w C# problem.

0

Witam.
Tworze mały program i mam problem. A mianowicie ustalenie jaki to użytkownik.
Zacznę od początku. Program zapisuje w bazie danych numery dokumentów i ich status. (Status - co się z tymi dokumentami dzieje - do kogo trafiły i czy w ogóle wróciły do firmy). Status ustawiają użytkownicy aplikacji. Gdy uruchomimy aplikacje wyskakuje okno do logowania: login i hasło, trzymane są w bazie danych (oczywiście logi unikalny i hasło kodowane md5). W aplikacji działam na procedurach bazodanowych, aby z pozycji programu nie była widoczna struktura bazy danych. Mam dodatkową tabele w której to zapisuje wszystkie dane przed zmianą statusu. (Wywołując insert select - dopisuje jeszcze rodzaj akcji jaką ktoś wywołał na tabeli z dokumentami - czy to delete czy update , oraz date z godziną) i chciałem jeszcze jakimś sposobem przechwycić użytkownika i wprowadzić do tej bazy. Tylko problem jest następujący - Działając na procedurach nie mogę dodać wprowadzenia kolejnego pola z poziomu visual studio. Mogę operować na poziomie otrzymanej już procedury.
Czy da się przechwycić jakoś użytkownika na poziomie bazy danych? Lub jakimś sposobem wprowadzić przed wykonaniem procedury na sztywno użytkownika programu?W VS nie widać tabel są tylko procedury odpowiedzialne do wprowadzania.
Czy może zrezygnować z logowania i wprowadzać do tej bazy użytkownika zalogowanego w systemie? O ile się nie myle było coś z GetUserName(). Tylko problem z wprowadzeniem go przy wywołanej danej procedurze.

0

czytałem parę razy i nic nie rozumiem... Może spróbuj jaśniej jakiego usera chcesz przechwycić i przede wszystkim po co?

0

Posiadam tabele z zapisanymi w niej dokumentami. Każdy dokument ma pole [status], który trzeba ustawić, gdy wróci on z powrotem do firmy. Jeżeli cały towar został wydany bez zastrzeżeń to status ustawiamy na "ok" jeżeli zostało coś uszkodzone w transporcie to status "serwis" itd itp.. I w momencie zmiany statusu danego dokumentu korzystamy z procedury Update, która w środku ma ukrytą drugą procedure Insert select - kopiuje dane przed zmianą do innej (ukrytej tabeli) tylko po to by można było w razie potrzeby sprawdzić całą historie dokumentu. Ta tabela ma jeszcze dodatkowe 3 pola. (ocode - zapisuje rodzaj procedury wykonanej na dokumencie (czy to był update czy delete), tstamp (zapisuje datę i czas kiedy to było zrobione) i pole user (do którego właśnie chcę przechwycić i wprowadzić owego usera). Problem jest następujący, że z poziomu sql nie potrafie i nie wiem czy można w procedurze przechwycić już nazwę zalogowanego do systemu użytkownika? Bo z poziomu VS nie mogę edytować tej procedury, a dostępu do tabel nie posiadam i nie chce posiadać z poziomu VS. Chce tylko i wyłącznie operować na procedurach składowania.

0

nie możesz zmienić stored proc tak aby podawać do niej id zalogowanego usera? Baza nie ma możliwości pobrania zalogowanego do systemu (czy to windows czy sam program) usera bo niby jak. Możesz jedynie pobrać usera, którym program łączy się z bazą ale podejrzewam, że program łączy się na jednym użytkowniku BD.

0

Ok. Już ogarnąłem. Można przechwycić w sql użytkownika za pomocą SUSER_SNAME()
Ale dzięki chłopaki za pomoc.

0

to albo kłamałeś na początku

login i hasło, trzymane są w bazie danych

  • czyli masz w bazie tabele z userami, którzy logują się do aplikacji, albo znalazłeś całkiem inny username niżby wynikało z twoich postów
0

Rozważałem 2 rozwiązania;
1 - brać userów z bazy danych
2- określać ich na podstawie zalogowania do systemu windows. Wszystko działa na AD więc i tak każdy user ma swoje konto z określoną nazwą. Więc okno logowania może tylko przepuszczać do programu.

0

no ale jeśli masz osobne logowanie do programu i osobno AD to co stoi na przeszkodzie aby do windowsa był zalogowany edek a do programu zdzisiek? Jak sądzisz który user pojawi się w bazie jako zmieniający?

0

To jest rozwiązanie w firmie i tylko 2 osoby będą wprowadzały zmiany, no góra 3, więc na 3 osobnych komputerach nikt więcej. Program typu MS DYNAMICS AX też bierze logowanie do systemu i to w firmie w zupełności wystarcza.

0
Gal24 napisał(a):

To jest rozwiązanie w firmie i tylko 2 osoby będą wprowadzały zmiany, no góra 3, więc na 3 osobnych komputerach nikt więcej. Program typu MS DYNAMICS AX też bierze logowanie do systemu i to w firmie w zupełności wystarcza.

Pewnie, tylko jaki jest sens robić jeszcze jakiś osobny login i hasło, skoro autentykujesz się przez AD? Jeśli to możliwe, zawsze dobrze jest iść w stronę SSO.

1 użytkowników online, w tym zalogowanych: 0, gości: 1