Bất cứ khi nào tôi tạo một ứng dụng mới với studio trực quan 2013 Express cho web và sử dụng xác thực tài khoản cá nhân và tôi nhấn nút đăng ký, tôi nhận thấy rằng nó thực hiện 'Email' thay vì 'Tên người dùng' và giống nhau trong LoginViewModel vì nó sử dụng Email để Đăng nhập thay vì Tên người dùng. Làm thế nào tôi có thể thay đổi điều này để sử dụng Tên đăng nhập thay vì Email mặc định mà không gặp sự cố? Ngoài ra tôi muốn biết làm thế nào để chuyển đổi mặc định 'guid' đó là một loại chuỗi để 'id' (loại nguyên).Sử dụng Tên người dùng thay vì Email để nhận dạng trong Asp.net mvc5
Trả lời
Câu hỏi được liên kết trong câu trả lời được chấp nhận sẽ giải thích cách sử dụng Email thay vì UserName, OP muốn UserName thay vì email là thứ tôi đang tìm kiếm trong Identity 2.0 trong dự án MVC.
Trong trường hợp bất kỳ ai khác đến đây từ tìm kiếm trên google, thực sự rất dễ dàng để thực hiện việc này. Nếu bạn nhìn vào hành động đăng ký, nó chỉ đơn giản là đặt UserName thành địa chỉ Email. Vì vậy, .........
Thêm tên người dùng vào RegisterViewModel và thêm nó vào chế độ xem đăng ký.
<div class="form-group">
@Html.LabelFor(m => m.UserName, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.TextBoxFor(m => m.UserName, new { @class = "form-control", @placeholder = "Username or email" })
</div>
</div>
Trong Register bài Action trên AccountController thiết UserName để UserName của ViewModel và email tới Email của ViewModel.
var user = new ApplicationUser { UserName = model.UserName, Email = model.Email };
Tôi không muốn sử dụng email theo bất kỳ cách nào. Có cách nào để tôi có thể đăng ký mà không cung cấp địa chỉ email không? –
Tôi không biết địa chỉ email có bắt buộc trong mô hình hay không nhưng nếu không, bạn có thể xóa bốn dòng trong chế độ xem đăng ký cho địa chỉ email và thay thế chúng bằng mã UserName mà tôi đã liệt kê ở trên. Sau đó, bạn có thể đặt ApplicationUser mới như sau trong hành động đăng trong AccountController của bạn. var user = new ApplicationUser {UserName = model.UserName, Email = model.Email}; Nếu địa chỉ email là bắt buộc, chỉ cần đặt email thành string.empty – Hoody
Kiểm tra xác thực cho chuỗi.Empty. sasi kumar của câu trả lời hoạt động chính xác. –
Để làm cho email là không độc đáo:
Cấu hình dưới đây trong IdentityConfig
manager.UserValidator = new UserValidator<ApplicationUser>(manager)
{
AllowOnlyAlphanumericUserNames = false,
RequireUniqueEmail = false
};
Đây là giải pháp đơn giản nhất cho tôi và loại bỏ một vấn đề mà tôi có sau khi chuyển đổi từ MVC 4 sang MVC 5. – Xipooo
- 1. Cách sử dụng email thay vì tên người dùng để xác thực người dùng?
- 2. Cách nhận người dùng hiện tại và cách sử dụng Lớp người dùng trong MVC5?
- 3. Cách nhận thuộc tính người dùng (tên người dùng, email, v.v.) sử dụng id nhận dạng cognito
- 4. Cách lấy tên người dùng hiện tại thay vì nhận dạng AppPool trong logfile bằng Log4Net
- 5. Gửi email trong asp.net với tên cụ thể thay vì email người gửi
- 6. GitHub tác giả: tên thật thay vì tên người dùng
- 7. Nhận tất cả tên vai trò trong hệ thống nhận dạng ASP.NET MVC5
- 8. Cách đăng xuất người dùng trong OWIN ASP.NET MVC5
- 9. Asp.net nhận dạng 2.0 - Unique Email
- 10. C# asp.net nhận tên người dùng
- 11. CakePHP 2.0 Xác thực sử dụng email thay vì tên
- 12. Xác thực/đăng nhập Symfony2 bằng email thay vì tên người dùng
- 13. Django- cách sử dụng chế độ xem đăng nhập được tích hợp với email thay vì tên người dùng?
- 14. Khung công tác còn lại Django: Nhận mã thông báo xác thực bằng email thay vì tên người dùng
- 15. email authlogic như tên người dùng
- 16. ASP.net nhận dạng 2.1 Nhận tất cả người sử dụng với vai trò
- 17. Đường ray đến tên người dùng thay vì id
- 18. Slack - Hiển thị tên đầy đủ của người dùng thay vì tên người dùng
- 19. signalR - nhận tên người dùng
- 20. Lấy id người dùng của nhận dạng tên người dùng 2.0
- 21. Tôi có nên sử dụng tên người dùng hoặc ID của người dùng để tham chiếu đến người dùng được xác thực trong ASP.NET
- 22. Nhận địa chỉ email của người dùng từ tên người dùng qua PowerShell và WMI?
- 23. tên người dùng hoặc id email để đăng nhập?
- 24. Cách nhận email người dùng trên GraphRequest.newMeRequest
- 25. twitter api nhận email người dùng
- 26. Bất kỳ cách nào để nhận email người dùng Twitter?
- 27. Sử dụng API Kết nối Trực tiếp trong ASP.NET để truy xuất địa chỉ email của người dùng
- 28. nhận email người dùng facebook và họ/tên người dùng bằng Phonegap FB Plugin cho ứng dụng IOS
- 29. Asp.Net nhận dạng tiết kiệm sử dụng mà không cần email
- 30. Github hiển thị tên thay vì tên người dùng được liên kết trong cam kết
[Đây] (http://www.asp.net/identity/overview/extensibility/ thay đổi-chính-key-cho-người dùng-in-aspnet-identity) là một bài viết rất tốt, bạn có thể làm theo và bạn sẽ nhận được câu trả lời. Ngoài ra, hãy xem [câu hỏi] này (http://stackoverflow.com/questions/19758575/asp-net-identity-use-email-instead-of-user-name) Bạn có thể sử dụng lớp usermanager của riêng bạn và sử dụng tên người dùng thay vì email . – Mairaj
Theo mặc định, mã đang sử dụng email làm tên người dùng. 'var user = new ApplicationUser {UserName = model.Email, Email = model.Email};'. Thêm thuộc tính userName vào RegisterViewModel và sử dụng nó thay vào đó. – Lijo