2012-12-21 25 views
14

Tôi có thể lấy UserId của người dùng đã đăng nhập bằng cách nào? Tôi đang sử dụng hệ thống tiêu chuẩn tạo ra AccountModel. Tôi có thể lấy tên người dùng bằng cách sử dụng:Nhận id người dùng đã đăng nhập

User.Identity.Name 

nhưng tôi không thấy trường UserId. Tôi muốn sử dụng UserId như một khóa ngoại cho một bảng khác.

+2

Tư cách thành viên đơn giản? ASP.NET thành viên? –

+0

Simple Membership – naveed

Trả lời

14
+0

Hmm, tôi nhận được: Lỗi 'System.Web.Security.MembershipUser' không chứa một định nghĩa cho 'GetUser' – naveed

+0

Cảm ơn, typo ở đó, nó được giả sử là 'Membership'. –

+0

Ok, điều đó đã hiệu quả. Cảm ơn! – naveed

9

Cách tốt nhất để làm điều đó là sử dụng lớp WebSecurty

var memberId = WebSecurity.GetUserId(User.Identity.Name); 

và đừng quên thêm [InitializeSimpleMembership] trên đầu bộ điều khiển của bạn :)

+0

Điều này cũng làm việc, cảm ơn bạn. – naveed

+0

Miễn là nhà cung cấp của bạn tuân thủ các yêu cầu để sử dụng 'int' làm Mã định danh duy nhất. –

+0

cảm ơn. nó đã được hữu ích :) –

19

Hãy thử điều này:

using Microsoft.AspNet.Identity; 
User.Identity.GetUserId(); 

Đó là cách thực hiện trong các khung nhìn một phần cho mẫu MVC hiện tại (MVC5/EF6/VS2013).

Sửa lỗi nếu tôi sai, vì tôi đã nhìn thấy câu trả lời của Aviatrix rất nhiều, nhưng điều gì sẽ xảy ra nếu nhiều người dùng có cùng tên trong cơ sở dữ liệu?

+0

Điều đó làm việc cho tôi quá! +1 – Bojangles

+0

Giải pháp này là không thể nếu người dùng đã đăng nhập và cố gắng thay đổi mật khẩu hiện tại. – usefulBee