2012-05-16 4 views
0

내 응용 프로그램에서 로그인 한 사용자의 사용자 이름을 얻으려면 User.Identity을 사용합니다. 사용자 계정 페이지를 원할 때 전자 메일 및 암호 정보를 얻을 수 있는지 궁금합니다. 거기에 이메일 사용자 이름 등을 볼 수 있으며 그들의 비밀 번호를 변경할 수 있습니다.사용자 계정에 대한 User.Identity

또한 웹 서비스가 getusers라는이 내 데이터베이스의 사용자 테이블에서 모든 정보를 얻을 수 있지만이 경우 사용자가 로그인 한 후 나는 데이터베이스에서 계정 정보를 얻는 방법이 확실하지 오전 이렇게해라.

지금까지 나는이있다 :

내가 이름을 얻을 수 있기 때문에 매우 중요하지만, 나는 휴식이 필요
protected void Page_Load(object sender, EventArgs e) 
{ 
    if (User.Identity.IsAuthenticated) 
    { 
     username.Text = User.Identity.Name; 
    } 

    localhost.Service1 myws = new localhost.Service1(); 
    ds = myws.GetUsers(); 

} 

.

[WebMethod] 
    public DataSet GetUsers() 
    { 
     DataSet ds = new DataSet(); 
     string database = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|/dvd_forum.accdb;Persist Security Info=True"; 
     string queryStr = "select * from Users"; 
     OleDbConnection myConn = new OleDbConnection(database); 
     OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(queryStr, myConn); 
     myConn.Open(); 
     myDataAdapter.Fill(ds, "Users"); 
     myConn.Close(); 
     return ds; 
    } 

감사 : 여기

아, 그리고 웹 서비스 GetUsers입니다.

답변

0

먼저, GetUsers() 메서드는 SQL 삽입에 개방되어 있음을 경고해야합니다. 그 옆으로 ... 당신이 약간 GetUsers() 방법은 매개 변수를 받아 고유의 사용자에게 검색 범위를 좁힐 것을 변경 한 경우

, 당신은 할 수 :

[WebMethod] 
public DataSet GetUser(string UserName) 
{ 
    DataSet ds = new DataSet(); 
    string database = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|/dvd_forum.accdb;Persist Security Info=True"; 
    string queryStr = "select * from Users WHERE UserName=" + UserName; 
    OleDbConnection myConn = new OleDbConnection(database); 
    OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(queryStr, myConn); 
    myConn.Open(); 
    myDataAdapter.Fill(ds, "Users"); 
    myConn.Close(); 
    return ds; 
} 

을 이제 당신이해야 할 모든 전화

입니다
GetUser(User.Identity.Name); 

사용자 이름이 데이터베이스에 저장되었다고 가정하면 데이터 집합에 사용자 레코드가 반환됩니다.

+0

예. 곧 SQL 주입이 시작될 예정입니다. 이런 식으로 코드를 변경해야만했습니다. -> http://pastebin.com/rKPL8yw9하지만 서비스에서 사용자 이름을 호출하면 빈 XML이 반환됩니다. – user1389384

+0

Managment Studio와 같은 것으로 쿼리 링을 실행하면 결과가 나타 납니까? – Widor

0

asp.net 응용 프로그램에서 MembershipUser 클래스를 사용하는 경우이 link을 확인할 수 있습니다.

다음은 코드 스 니펫입니다.

public void Page_Load(object sender, EventArgs args) 
{ 
    u = Membership.GetUser(User.Identity.Name); 

    if (!IsPostBack) 
    { 
    EmailTextBox.Text = u.Email; 
    } 
} 
관련 문제