Tôi đang phát triển một ứng dụng ASP.NET MVC 5. Tôi có một DB hiện có, từ đó tôi đã tạo ra mô hình dữ liệu thực thể ADO.NET của mình. Tôi có một bảng trong DB đó có chứa "tên người dùng" và "mật khẩu" cột, và tôi muốn sử dụng chúng để thực hiện xác thực và ủy quyền trong Webapp của tôi; Tôi không thể tạo bất kỳ cơ sở dữ liệu hoặc bảng hoặc cột nào khác và tôi không thể sử dụng xác thực danh tính chuẩn vì yêu cầu của khách hàng. Tôi không cần quản lý đăng ký, thay đổi mật khẩu hoặc các nội dung khác: chỉ cần đăng nhập bằng mật khẩu và tên người dùng. Tôi có thể làm như thế nào?Cách triển khai xác thực tùy chỉnh trong ASP.NET MVC 5
59
A
Trả lời
112
Có, bạn có thể. Các phần xác thực và ủy quyền hoạt động độc lập. Nếu bạn có dịch vụ xác thực của riêng mình, bạn chỉ có thể sử dụng phần ủy quyền của OWIN. Hãy xem xét bạn đã có một UserManager
xác nhận username
và password
. Vì vậy, bạn có thể viết đoạn code sau trong bài action login trở lại của bạn:
[HttpPost]
public ActionResult Login(string username, string password)
{
if (new UserManager().IsValid(username, password))
{
var ident = new ClaimsIdentity(
new[] {
// adding following 2 claim just for supporting default antiforgery provider
new Claim(ClaimTypes.NameIdentifier, username),
new Claim("http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider", "ASP.NET Identity", "http://www.w3.org/2001/XMLSchema#string"),
new Claim(ClaimTypes.Name,username),
// optionally you could add roles if any
new Claim(ClaimTypes.Role, "RoleName"),
new Claim(ClaimTypes.Role, "AnotherRole"),
},
DefaultAuthenticationTypes.ApplicationCookie);
HttpContext.GetOwinContext().Authentication.SignIn(
new AuthenticationProperties { IsPersistent = false }, ident);
return RedirectToAction("MyAction"); // auth succeed
}
// invalid username or password
ModelState.AddModelError("", "invalid username or password");
return View();
}
Và quản lý người dùng của bạn có thể là một cái gì như thế này:
class UserManager
{
public bool IsValid(string username, string password)
{
using(var db=new MyDbContext()) // use your DbConext
{
// for the sake of simplicity I use plain text passwords
// in real world hashing and salting techniques must be implemented
return db.Users.Any(u=>u.Username==username
&& u.Password==password);
}
}
}
Cuối cùng, bạn có thể bảo vệ những hành động hoặc điều khiển của bạn bằng cách thêm thuộc tính Authorize
.
[Authorize]
public ActionResult MySecretAction()
{
// all authorized users can use this method
// we have accessed current user principal by calling also
// HttpContext.User
}
[Authorize(Roles="Admin")]
public ActionResult MySecretAction()
{
// just Admin users have access to this method
}
Các vấn đề liên quan
- 1. Cách triển khai Trình xác thực không đồng bộ hóa tùy chỉnh trong Angular2/4/5
- 2. ASP.NET 5 Vai trò tùy chỉnh cho Xác thực Windows
- 3. Asp.net MVC 4 + WEB API - Mã xác thực tùy chỉnh
- 4. Xác thực mẫu ASP.NET MVC 5
- 5. ASP.Net MVC Tuỳ chỉnh xác thực
- 6. Xác thực tùy chỉnh trong ASP.Net-Core
- 7. Triển khai gói xác thực cửa sổ tùy chỉnh
- 8. Làm cách nào để triển khai xác thực tùy chỉnh trong Spring Security 3?
- 9. Cách triển khai nhà cung cấp bộ nhớ cache tùy chỉnh với ASP.NET MVC
- 10. Cách tốt nhất để phát triển hệ thống đăng nhập/xác thực tùy chỉnh trong ASP.NET
- 11. ASP.NET MVC: Triển khai xác thực phía máy khách với thuộc tính mà không IClientValidatable
- 12. Triển khai thực hiện tùy chỉnh
- 13. Triển khai Nhà cung cấp Hồ sơ Tùy chỉnh trong ASP.NET MVC
- 14. Triển khai Google Analytics trong Asp.net mvc
- 15. MVC 5: Tùy chỉnh AuthorizeAttribute và Caching
- 16. Xác thực và ủy quyền không có khung thực thể trong ASP.NET 5 MVC 6
- 17. ASP.NET 5 Identity - tùy chỉnh SignInManager
- 18. Triển khai Trang xem cơ sở MVC tùy chỉnh
- 19. Xác thực biểu mẫu tùy chỉnh trong MVC
- 20. Triển khai TraceListener tùy chỉnh trong .NET
- 21. Cách triển khai LogAttribute tùy chỉnh trên Lớp
- 22. Xác thực trong ASP.NET 5 (vNext)
- 23. ASP.Net MVC 4 Tùy chỉnh xác nhậnAttribute Dependency Injection
- 24. Triển khai COM tùy chỉnh?
- 25. ASP.NET MVC thực hiện sử dụng tùy chỉnh validator IClientValidatable
- 26. Cách triển khai nhà cung cấp NoSQL Identity cho ASP.NET 5 MVC 6
- 27. Hoàn toàn tùy chỉnh xác thực trong ASP.NET MVC: mất HttpContext.User
- 28. Tùy chỉnh IPrincipal với các hình thức xác thực trong ASP.NET MVC
- 29. Ứng dụng MVC lõi Asp.Net Xác thực Windows trong IIS
- 30. Cách được khuyến nghị để triển khai nhà cung cấp xác thực tùy chỉnh để xác thực nợ
Tôi rất tiếc, tôi là người mới có xác thực. Trường hợp shuold tôi sử dụng mã này? Làm thế nào tôi có thể yêu cầu MVC lấy các trường mật khẩu tên người dùng từ lớp EF của tôi? –
Tôi vừa cập nhật bài đăng của mình để trả lời câu hỏi của bạn. –
Cảm ơn! Nó hoạt động tuyệt vời! –