반응형
ASP.NET MVC 5에서 사용자 지정 인증을 구현하는 방법
ASP.NET MVC 5 응용 프로그램을 개발 중입니다. ADO.NET 엔터티 데이터 모델을 만든 기존 DB가 있습니다. DB에 "사용자 이름"과 "비밀번호"열이 포함 된 테이블이 있으며이를 사용하여 웹앱에서 인증 및 권한 부여를 구현하고 싶습니다. 다른 데이터베이스, 테이블 또는 열을 만들 수 없으며 고객의 요구 사항으로 인해 표준 ID 인증을 사용할 수 없습니다. 가입, 비밀번호 변경 또는 기타 작업을 관리 할 필요가 없습니다. 비밀번호와 사용자 이름으로 로그인하기 만하면됩니다. 어떻게 할 수 있습니까?
그래 넌 할수있어. 인증 및 권한 부여 부분은 독립적으로 작동합니다. 자체 인증 서비스가있는 경우 OWIN의 인증 부분 만 사용할 수 있습니다. 고려 당신이 이미 가지고 UserManager
있는 유효성을 확인 username
하고 password
. 따라서 포스트 백 로그인 작업에 다음 코드를 작성할 수 있습니다.
[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();
}
사용자 관리자는 다음과 같을 수 있습니다.
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);
}
}
}
결국 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
}
참고 URL : https://stackoverflow.com/questions/31584506/how-to-implement-custom-authentication-in-asp-net-mvc-5
반응형
'developer tip' 카테고리의 다른 글
C #에서 런타임에 DLL로드 (0) | 2020.10.21 |
---|---|
고양이 방법 < (0) | 2020.10.21 |
Java 할당 연산자 실행 (0) | 2020.10.21 |
왜 (그리고 언제) sizeof 뒤에 괄호를 사용해야합니까? (0) | 2020.10.21 |
models.py를 여러 파일로 분할 (0) | 2020.10.21 |