Solved

ASP.NET 4 Visual Studio 2010.  Membership Website Question

Posted on 2011-03-09
14
337 Views
Last Modified: 2012-05-11
I have a asp.net 4 membership web with roles.  When a user goes to change his password, I want to display that particular users Password Questiion.  I added a dataset form view to the membership database and am able to achieve this by a sql query when I specify the users actual name in the query.  I want to change my code to query the databased based on the user that is logged in.

Basically I want to change the part in my code that says
WHERE (aspnet_Users.UserName = 'RICK')
 to  something like

Where aspnet_users.username = (the currently logged in user)

I am not sure what to replace "the logged in user" with to make it equal the currently logged in user

any help would be appreciated.
SELECT aspnet_Membership.PasswordQuestion, aspnet_Membership.PasswordAnswer FROM aspnet_Membership INNER JOIN aspnet_Users ON aspnet_Membership.UserId = aspnet_Users.UserId WHERE (aspnet_Users.UserName = 'RICK')

Open in new window

0
Comment
Question by:bidgadget
  • 8
  • 6
14 Comments
 
LVL 52

Expert Comment

by:Carl Tawn
ID: 35084676
The following should give you that:
Membership.GetUser().Username

Open in new window

0
 

Author Comment

by:bidgadget
ID: 35084714
Thank you for your response.  But how would I add that to my sql query?
0
 
LVL 52

Expert Comment

by:Carl Tawn
ID: 35084734
Are you using inline SQL or calling a stored procedure? If it is inline you would do something like (assuming C#):
string username = Membership.GetUser().UserName;
string sql = string.Format("SELECT aspnet_Membership.PasswordQuestion, aspnet_Membership.PasswordAnswer FROM aspnet_Membership INNER JOIN aspnet_Users ON aspnet_Membership.UserId = aspnet_Users.UserId WHERE (aspnet_Users.UserName = '{0}')
", username);

Open in new window

0
Master Your Team's Linux and Cloud Stack!

The average business loses $13.5M per year to ineffective training (per 1,000 employees). Keep ahead of the competition and combine in-person quality with online cost and flexibility by training with Linux Academy.

 

Author Comment

by:bidgadget
ID: 35084764
I am using inline sql and with VB
0
 
LVL 52

Expert Comment

by:Carl Tawn
ID: 35084782
In that case:
Dim username As String = Membership.GetUser().UserName
Dim sql As String = String.Format("SELECT aspnet_Membership.PasswordQuestion, aspnet_Membership.PasswordAnswer FROM aspnet_Membership INNER JOIN aspnet_Users ON aspnet_Membership.UserId = aspnet_Users.UserId WHERE (aspnet_Users.UserName = '{0}')
", username)

Open in new window

0
 

Author Comment

by:bidgadget
ID: 35084863
Ok, I will give it a try.  Do I just paste the code into in the "define custum sql or stored procedure"?
0
 
LVL 52

Expert Comment

by:Carl Tawn
ID: 35084935
Depends how you are trying to get at the data.
0
 

Author Comment

by:bidgadget
ID: 35084962
I added a list view, then made a connection string to the membership database.  Then I am at the part where I am creating the custom sql query to return the question.  Thank you so much
0
 

Author Comment

by:bidgadget
ID: 35085077
I am not sure if I add the sql statement in the vb or sql part
0
 
LVL 52

Accepted Solution

by:
Carl Tawn earned 500 total points
ID: 35085141
Ah, ok, that sounds like you are using a SqlDataSource, which means you need to massage things a little to get it to work. In the dialog choose "Custom sql query...." then for the "select statement" paste your SQL statement as:
SELECT aspnet_Membership.PasswordQuestion, aspnet_Membership.PasswordAnswer FROM aspnet_Membership INNER JOIN aspnet_Users ON aspnet_Membership.UserId = aspnet_Users.UserId WHERE aspnet_Users.UserName = @UserName

Open in new window

When the dialog has finished you should have a SqlDataSource component on your form. Switch to "Source View" and add a SelectParameters section to the SqlDataSource. The result should look like:
    <asp:SqlDataSource ID="SqlDataSource1" runat="server"  OnSelecting="SqlDataSource1_Selecting"
        SelectCommand="SELECT aspnet_Membership.PasswordQuestion, aspnet_Membership.PasswordAnswer FROM aspnet_Membership INNER JOIN aspnet_Users ON aspnet_Membership.UserId = aspnet_Users.UserId WHERE aspnet_Users.UserName = @UserName">
        <SelectParameters>
            <asp:Parameter Name="UserName" Type="String" />
        </SelectParameters>
    </asp:SqlDataSource>

Open in new window

Finally, switch to your code-behind and add the following code block to the page:
        Protected Sub SqlDataSource1_Selecting(sender As Object, e As SqlDataSourceSelectingEventArgs)
            SqlDataSource1.SelectParameters("UserName").DefaultValue = Membership.GetUser().UserName
        End Sub

Open in new window

0
 

Author Comment

by:bidgadget
ID: 35085336
OK.  When I put the first code in, it takes me to another screen that says it recognizes I have a parameter "username"  It is asking me for a parameter source, a query string fiels and a default value
0
 
LVL 52

Expert Comment

by:Carl Tawn
ID: 35085399
Ah, it's a little smarter than I gave it credit for :)   Leave the source set to "None" and the default value empty, unless you want to give it a default.
0
 

Author Comment

by:bidgadget
ID: 35085839
Still having a little trouble, page coming up blank, but i will play around with it.  Most likely I am not implementng correctly.  Thaks again for all your help
0
 

Author Closing Comment

by:bidgadget
ID: 35085851
thanks again
0

Featured Post

Gigs: Get Your Project Delivered by an Expert

Select from freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely and get projects done right.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Developer portfolios can be a bit of an enigma—how do you present yourself to employers without burying them in lines of code?  A modern portfolio is more than just work samples, it’s also a statement of how you work.
Color can increase conversions, create feelings of warmth or even incite people to get behind a cause. If you want your website to really impact site visitors, then it is vital to consider the impact color has on them.
The viewer will learn how to look for a specific file type in a local or remote server directory using PHP.
Learn how to create flexible layouts using relative units in CSS.  New relative units added in CSS3 include vw(viewports width), vh(viewports height), vmin(minimum of viewports height and width), and vmax (maximum of viewports height and width).

775 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question