예를 들어 사용자가 로그인 한 경우 userID 및/또는 사용자의 역할/그룹을 저장하는 가장 좋은 방법은 무엇입니까? 분명한 접근 방식은 쿠키와 세션입니까? 다른 옵션은 무엇입니까?asp.net mvc (면도날 3) 응용 프로그램에서 값을 저장하는 방법은 무엇입니까?
1
A
답변
0
적어도 양식 인증을 사용하면 사용자 ID와 역할을 Formst Auth Ticket에 넣을 수 있습니다.
Here'a 내가했던 방법의 예 :
public static HttpCookie CreateCookie(IUserIdValue userId, string name, IEnumerable<int> group, bool isPersistent = false)
{
var user = new AuthenticationTicketData() { Groups = @group, UserId = userId };
var ft = new FormsAuthenticationTicket(2, name, DateTime.Now, DateTime.Now.Add(FormsAuthentication.Timeout),
isPersistent, user.Pack());
var ck = new HttpCookie(FormsAuthentication.FormsCookieName)
{
Value = FormsAuthentication.Encrypt(ft),
Path = FormsAuthentication.FormsCookiePath,
Domain = FormsAuthentication.CookieDomain
};
if (isPersistent)
{
ck.Expires = DateTime.Now.Add(FormsAuthentication.Timeout);
}
return ck;
}
public static string Pack(this AuthenticationTicketData data)
{
if (data == null) throw new ArgumentNullException("data");
return String.Format("{0};{1}",PackUserId(data.UserId),string.Join(",",data.Groups));
}
static string PackUserId(IUserIdValue uid)
{
if (uid == null) throw new ArgumentNullException("uid");
var tpn = uid.GetType().GetFullTypeName();
return String.Format("{0}|{1}",tpn,uid.ToString());
}
public static HttpCookie SetAuthCookie(this HttpResponse response,IUserIdValue userId, string name, IEnumerable<int> group, bool isPersistent = false)
{
var ck = CreateCookie(userId, name, group, isPersistent);
response.AppendCookie(ck);
return ck;
}
또 다른 대안이 테이블 등 사용자 세션 데이터베이스 (세션에 관계 없음), 뭔가를 유지하는 것입니다 (GUID, 사용자 이름, 사용자 ID , 역할, 만료). 하지만이 방법은 사용자가 로그인/로그 아웃 할 때 또는 양식 인증이 아닌 자신의 인증을 사용하는 경우를 추적하려는 경우에 더 적합합니다.
+0
예제와 설명을 제공해 주셔서 감사합니다! – Chaka
0
사용자 당 값을 저장하려면 I 세션이 가장 좋습니다. 세션은 사용자/브라우저별로 생성됩니다. 각 사용자는 자신의 세션 개체를 가지므로 세션이 끝날 때까지 사용자 역할 정보를 응용 프로그램 전체에 유지할 수 있습니다.
사용자 보안 정보를 쿠키에 저장하지 않는 것이 좋습니다. 응용 프로그램에 큰 보안 허점이 생길 수 있기 때문입니다.
관련 문제
- 1. "User.Identity.Name"값을 asp.net mvc 3
- 2. 웹 그리드는 MVC 3 면도날
- 3. asp.net mvc 웹 응용 프로그램에서 asp.net MVC
- 4. ASP.NET MVP 응용 프로그램에서 변경되는 필드 만 저장하는 방법은 무엇입니까?
- 5. ASP.NET MVC 3 응용 프로그램에서 공유 상태를 구현하려면 어떻게해야합니까?
- 6. 내 ASP.NET MVC 응용 프로그램에서 MVC 경로
- 7. 통화 Html.BeginForm 비동기 ASP.NET MVC 3 응용 프로그램에서
- 8. 검색시 쿼리 값을 저장하는 방법은 무엇입니까? ASP.NET MVC
- 9. catch가 있어도 ASP.NET MVC 3 컨트롤러에서 예외가 발생합니까? 내 ASP.NET MVC 3 응용 프로그램에서
- 10. ASP.NET 응용 프로그램에서 연결 문자열을 저장하는 더 안전한 방법은 무엇입니까?
- 11. 내 Asp.net MVC 응용 프로그램에서
- 12. asp.net mvc 웹 응용 프로그램에서 mp3 URL을 저장하는 크롤링하는 방법
- 13. ASP.NET MVC, 데스크톱 응용 프로그램에서 사용자 등록
- 14. Asp.Net MVC 3 응용 프로그램에서 새 항목을 만들 때 SqlException
- 15. RabbitMQ : ASP.NET MVC 응용 프로그램에서 게시
- 16. ASP.NET MVC 응용 프로그램에서 WCF 서비스 호출
- 17. ASP.NET MVC 응용 프로그램에서 사용자의 세션을 유지하는 방법은 무엇입니까?
- 18. ASP.NET MVC 응용 프로그램에서 단일 JavaScript 파일을 관리하는 방법은 무엇입니까?
- 19. ASP.NET MVC 응용 프로그램에서 컨트롤러 이름과 동작을 현지화하는 방법은 무엇입니까?
- 20. ASP.NET MVC 응용 프로그램에서 DoS 공격을 방지하는 방법은 무엇입니까?
- 21. ASP.Net MVC 응용 프로그램에서 WCF 서비스에 액세스하는 방법은 무엇입니까?
- 22. ASP.NET MVC 2 응용 프로그램에서 JSON 호출을 활성화하는 방법은 무엇입니까?
- 23. Html.Editor() 도우미 내 ASP.NET MVC 3 응용 프로그램에서 모델
- 24. Asp.net n 계층 응용 프로그램에서 MVC 3 코드 생성이 실패합니다.
- 25. asp.net mvc 3 응용 프로그램에서 Trent Richardson datetimepicker 포함
- 26. ASP.NET MVC 3 응용 프로그램에서 WCF 데이터 서비스를 호스팅 하시겠습니까?
- 27. ASP.NET MVC 3 응용 프로그램에서 최신 버전으로 jQuery 업데이트
- 28. RedirectPermanent가 ASP.NET MVC 3 응용 프로그램에서 이상한 결과를 초래합니다.
- 29. ASP.Net MVC 3 Grid
- 30. ASP.NET MVC 응용 프로그램에서 ajax 호출 보안
사용자 당 값을 저장하려면 해당 옵션이 가장 적합하다고 생각합니다. – pollirrata
완전하게 따르지 않습니다. 예를 들어 주시겠습니까? – Chaka
답변에 자세한 내용을 추가했습니다 ... – pollirrata