게시판 본문 ASP, ASP.NET, IIS & Script - Read Only
[ASP.NET] user 권한에 관한.. |
---|
작성자: toast
작성일시: 2004-06-14 10:41,
조회수: 1,116
|
안녕하세요~
요전에 글을 올리고 또 질문이 생겨버려서..ㅡㅡ.. user가 로그인하면 user가 가진 각 역할에 대해 쿠키에 저장하는 부분에서요.. 데브피아 세미나 자료를 보다가요.. Global.ascx에서 System.Security.Principal.GenericPrincipal 를 이용한 쿠키인증티켓 만드는 것을 보았는데요.. 이것을 쓰게 되는 이유에 대해서 잘 이해가 안가서요.. 각 페이지가 요청될때마다 global.aspx에서 Application_AuthenticateRequest 이 이루어지고 페이지에 공통으로 들어갈 부분을 설정하게 되는 것 같습니다. 아래 소스처럼 이 부분에 GenericPrincipal 를 설정하는 것이 어떤 역할을 하는 것인지 알고 싶습니다.. 쿠키 설정을 하게 되면 일정 시간이 지난후 사라지게 되서 쓰게 되는 것인지.. 뭔가 ASP.NET에서 사용할 수 있는 특별한 혜택같은데 @_@.. 움,그리고 만약 사용자가 소수 사용자만 쓰게 된다면 세션을 쓰는 편이 이보다 편리한 방법일까요? 브라우저에서 쿠키설정을 꺼두면 아무 소용이 없어지는 거겠죠? 처음 해보는거라 좀 헤매고 있습니다.. 히움.. ^^a protected void Application_AuthenticateRequest(Object sender, EventArgs e) { //인증된 사용자이면 if (Request.IsAuthenticated == true) { String[] roles; // Create the roles cookie if it doesn't exist yet for this session. if ((Request.Cookies["portalroles"] == null) || (Request.Cookies ["portalroles"].Value == "")) { // Get roles from UserRoles table, and add to cookie UsersDB user = new UsersDB(); roles = user.GetRoles(User.Identity.Name); // Create a string to persist the roles String roleStr = ""; foreach (String role in roles) { roleStr += role; roleStr += ";"; } // 이렇게 인증티켓을 기회가 날때마다 새로 생성해줍니다. FormsAuthenticationTicket ticket = new FormsAuthenticationTicket( 1, // version Context.User.Identity.Name, // user name DateTime.Now, // issue time DateTime.Now.AddHours(1), // expires every hour false, // don't persist cookie roleStr // 사용자마다 특정 데이타는 여 기에 정장하면 유용하죠. 아래에서 이걸 다시 사용합니다. ); // 보안상 인증티켓을 암호화 합니다. String cookieStr = FormsAuthentication.Encrypt(ticket); // Send the cookie to the client Response.Cookies["portalroles"].Value = cookieStr; Response.Cookies["portalroles"].Path = "/"; //쿠키 만료시간이 1분이니까 페이지 요구때마다 새로 인증티켓을생성하 는 결과가됩니다. Response.Cookies["portalroles"].Expires = DateTime.Now.AddMinutes (1); } else { // 1분안에 페이지요구가 있으면 기존의 인증티켓을 그냥 사용합니다. FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt (Context.Request.Cookies["portalroles"].Value); //convert the string representation of the role data into a string array ArrayList userRoles = new ArrayList(); //인증티켓 만들때 같이 저장한 데이타를 여기서 사용하네요 foreach (String role in ticket.UserData.Split( new char[] {';'} )) { userRoles.Add(role); } roles = (String[]) userRoles.ToArray(typeof(String)); } // Add our own custom principal to the request containing the roles in the auth ticket Context.User = new GenericPrincipal(Context.User.Identity, roles); } } |
IP 주소: 220.117.193.253
|
송원석 |
앗, 이 부분은 저도 아직까지 명확하게 파악하고 있지 못한 부분입니다. 조금 생각해보고 말씀을 드려야 할 것 같네요. 게다가 오후에 미팅이 잡혀 있어서 답변을 생각해 볼 약간의 시간이 필요할 것 같습니다. ^_^
|
2004-06-14 11:12 |
게시물 | ||||
---|---|---|---|---|
440 | 2004-07-01 | 5,695 | ||
439 | 2004-06-28 | 3,576 | ||
438 | 2004-06-28 | 3,313 | ||
437 | 2004-06-25 | 3,232 | ||
436 | 2004-06-25 | 3,310 | ||
435 |
오마르 |
2004-06-23 | 1,042 | |
434 | 2004-06-23 | 3,255 | ||
433 |
궁금이 |
2004-06-23 | 1,047 | |
432 | 2004-06-23 | 3,304 | ||
431 |
궁금이 |
2004-06-22 | 961 | |
430 | 2004-06-23 | 3,203 | ||
429 |
오마르 |
2004-06-21 | 1,061 | |
428 |
오마르 |
2004-06-17 | 1,029 | |
427 | 2004-06-17 | 3,435 | ||
426 |
안녕하세요~~ ^^ [1] |
오마르 |
2004-06-14 | 828 |
toast |
2004-06-14 | 1,116 | ||
424 | 2004-06-14 | 3,454 | ||
423 |
toast |
2004-06-17 | 1,008 | |
422 | 2004-06-14 | 3,159 | ||
421 | 2004-06-14 | 3,130 | ||
420 |
오마르 |
2004-06-11 | 910 | |
419 |
re: 안녕하세요~~ ^^ [1] |
2004-06-11 | 3,364 | |
418 |
toast |
2004-06-03 | 924 | |
417 | 2004-06-04 | 3,402 | ||
416 |
toast |
2004-06-04 | 898 |