Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / Windows Forms / WinForm General / December 2004

Tip: Looking for answers? Try searching our database.

Global value from login

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
larzeb - 21 Dec 2004 03:28 GMT
The application requires that a user login, part of which is to
identify the company he wishes to work on.

The company field is used throughout the application as a SQL
selection field used in many queries. There are many modules which
need access to this company value.

Where is the appropriate place to store this value so that all the
other modules can access it?

TIA, Lars
Matt Berther - 21 Dec 2004 04:16 GMT
Hello larzeb,

Ive encountered a similar situation in an ASP.NET application, and I dont
believe the solution is that far off for a winforms app.

My solution involved deriving from GenericIdentity and adding a company to
the class.

public class MyIdentity : GenericIdentity
{
   private readonly string company;

   public MyIdentity(string username, string company) : base(username)
   {
       this.company = company;
   }

   public string Company { get { return company; } }
}

Now, pass an instance of this class off to GenericPrincipal and set the thread
principal in your validation method like this:

string[] roles = someMethodToGetTheRoles();
IIdentity identity = new MyIdentity(username, company);
IPrincipal principal = new GenericPrincipal(identity, roles);

AppDomain.CurrentDomain.SetThreadPrincipal(principal);

Later, when you need to check the company, use

MyIdentity identity = (MyIdentity)Thread.CurrentPrincipal.Identity;

--
Matt Berther
http://www.mattberther.com

> The application requires that a user login, part of which is to
> identify the company he wishes to work on.
[quoted text clipped - 7 lines]
>
> TIA, Lars
"Jeffrey Tan[MSFT]" - 21 Dec 2004 09:24 GMT
Hi Lars,

I think this is a wide topic. This is based on what type of application you
created, and which architecture your application used.

I think your request is somewhat like: how to achieve the Asp.net Forms
authentication in Winform app. Matt's solution is wrapping the company
information in GenericIdentity object, then store it through
AppDomain.CurrentDomain.SetThreadPrincipal, normally, if your application
is single thread, this may meet your need. But if your application is
multi-threaded, and the module in another thread can not access this
Generic identity in appDomain's main thread.

I think another possible solution may just create a tool class, which we
can use a static field of this class to store the company information, and
all the modules in the Application can access this tool class's static
field without problem.

Hope this helps.
=================================================
Thank you for your patience and cooperation. If you have any questions or
concerns, please feel free to post it in the group. I am standing by to be
of assistance.

Best regards,
Jeffrey Tan
Microsoft Online Partner Support
Signature

Get Secure! - www.microsoft.com/security
This posting is provided "as is" with no warranties and confers no rights.

larzeb - 21 Dec 2004 18:31 GMT
Jeffrey,

Forgive my ignorance, but if I define a class with static fields, what
is the lifetime of that object in a multi-project application? Will it
be available for the life of the entire application?

Thanks, Lars

>Hi Lars,
>
[quoted text clipped - 25 lines]
>Get Secure! - www.microsoft.com/security
>This posting is provided "as is" with no warranties and confers no rights.
"Jeffrey Tan[MSFT]" - 22 Dec 2004 06:58 GMT
Hi Lars,

Thanks very much for your feedback!

Normally, the static member's lifetime is as long as the class's(not the
instance's) lifetime. So the lifetime is as long as the AppDomain.

So if any module can access this static member in AppDoamain, the static
member is valid.

Hope this information helps.

Best regards,
Jeffrey Tan
Microsoft Online Partner Support
Signature

Get Secure! - www.microsoft.com/security
This posting is provided "as is" with no warranties and confers no rights.


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.