Why does User.Identity.Name show up bank inside the global.asax file? The user is beign authenticated cause the user gets directed to the pages inside the application, but the roles are not working cause the username cannot be identified.
-----Original Message----- From: Gurmeet Kohli [mailto:[EMAIL PROTECTED] Sent: Thursday, August 19, 2004 10:40 AM To: [EMAIL PROTECTED] Subject: [AspNetAnyQuestionIsOk] Role-based authorization with Forms Authentication Hello Everyone, I am trying to implement role-based authorization with Forms Authentication and running into a problem. I have created a login page where the user enters the username and password. After the user is authentication, I run a procedure in the global.asax file in the AuthenticateRequest event handler. In this procedure, I am trying to grab the roles from a table. But the query does not return any values! I know the user is authenticated cause the menu that displays the roles is empty. So the user does get to the .aspx forms. On debugging I have noticed that the Context.User.Identity.Name is empty. I am using the username that the user enters in the login form. My code is as follows: <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.IO" %> <%@ Import Namespace="System.Data.OleDB" %> <%@ Import Namespace="System.Security.Principal " %> <script language="VB" runat="server"> Sub Application_AuthenticateRequest(sender as object, e as EventArgs) Dim strConnect as string = ConfigurationSettings.AppSettings("HealthyVision") Dim Conn as OLEDBConnection Dim Rdr as OLEDBDataReader Dim CmdSelect as OLEDBCommand Dim strSQL as string Dim rolelist as New Arraylist If request.isAuthenticated Then 'determine the user's role Conn=New OLEDBConnection(strConnect) Conn.Open() 'Query to get Applications info from database strSQL="SELECT tbl_group.group_name FROM (tbl_User INNER JOIN tbl_roles ON tbl_User.Userid = tbl_roles.User_id) INNER JOIN tbl_group ON tbl_roles.Group_id = tbl_group.group_id WHERE (((tbl_User.Username)[EMAIL PROTECTED]))" CmdSelect=New OLEDBCommand(strSQL,Conn) CmdSelect.Parameters.add("@username", Context.User.Identity.Name) Rdr=CmdSelect.ExecuteReader() While rdr.read() rolelist.Add(rdr("group_name")) End While Rdr.close() 'convert the rolelist Arraylist to a string array Dim rolelistArray as string() = rolelist.toArray(gettype(string)) 'Add roles to the user principal HttpContext.Current.User = New GenericPrincipal(User.Identity, roleListArray) End if End Sub </script> ------------------------ Yahoo! Groups Sponsor --------------------~--> $9.95 domain names from Yahoo!. Register anything. http://us.click.yahoo.com/J8kdrA/y20IAA/yQLSAA/saFolB/TM --------------------------------------------------------------------~-> Yahoo! Groups Links ------------------------ Yahoo! Groups Sponsor --------------------~--> $9.95 domain names from Yahoo!. Register anything. http://us.click.yahoo.com/J8kdrA/y20IAA/yQLSAA/saFolB/TM --------------------------------------------------------------------~-> Yahoo! Groups Links <*> To visit your group on the web, go to: http://groups.yahoo.com/group/AspNetAnyQuestionIsOk/ <*> To unsubscribe from this group, send an email to: [EMAIL PROTECTED] <*> Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/
