10월, 2015의 게시물 표시

beego Tutorial

beego 를 공부해보다가, 삽질을 조금 줄여보고자 튜토리얼을 급하게 만들어보았습니다. 개인 위키에 있던 것을 그대로 복사해 놓아서 설명도 적고, 내용도 부족하지만, 그래도 초짜에게는 도움이 될 것 같아요. *^^* beego Tutorial 1 : 시작 beego Tutorial 2 : 첫페이지 만들어보기 beego Tutorial 3 : 모델 생성 beego Tutorial 4 : 관리자 목록 보여주기 beego Tutorial 5 : 관리자 추가하기 beego Tutorial 6 : 관리자 비밀번호 변경하기 beego Tutorial 7 : 관리자 수정하기 beego Tutorial 8 : 관리자 삭제하기 beego Tutorial 9 : 비밀번호 단방향암호화(SHA512) 하기 beego Tutorial 10 : 개인정보 양방향암호화(AES256) 하기 beego Tutorial 11 : 로그인/로그아웃 처리하기

beego Tutorial 11 : 로그인/로그아웃 처리하기

명색이 관리자 화면인데, 아무나 들어와서 조작하면 안되겠지요? 이제는 마지막으로 로그인/로그아웃 처리를 해보겠습니다. 로그인/로그아웃은 세션을 이용해서 구현합니다. 로그인 화면을 구성합니다.  xyz/views/index.html  을 작성합니다. <!DOCTYPE html> < html lang = "ko" > < head > < meta charset = "utf-8" > < meta http-equiv = "X-UA-Compatible" content = "IE=edge" > < meta http-equiv = "Content-Type" content = "text/html; charset=utf-8" > < meta name = "viewport" content = "width=device-width, initial-scale=1.0" > < meta name = "_xsrf" content = "{{.xsrf_token}}" / > < title > Login < / title > < link rel = "stylesheet" href = "/static/b/css/bootstrap.min.css" > < / head > < body >   < div class = "container" style = "margin-top: 20px" > < form action = "/login" method = "post" class = "form-h

beego Tutorial 10 : 개인정보 양방향암호화(AES256) 하기

이 예제에는 개인정보 데이터가 없긴 하지만, 별명(Nick)을 개인정보라 간주하고 암호화를 진행해보겠습니다. 데이터를 암호화하고 다시 풀려면, Key 가 있어야 합니다. 이 Key 를  xyz/conf/app.conf  에 기록해 놓습니다. ... enckey = oei0oiejhdsa7AS6dkjSk3l5dkwHG659 ... xyz/models/common.go  를 수정합니다. package models   import ( "crypto/aes" "crypto/cipher" "crypto/rand" "encoding/base64" "fmt" "github.com/astaxie/beego" "github.com/astaxie/beego/orm" "io" )   var key [] byte   func init () { key = [] byte ( beego . AppConfig . String ( "enckey" )) orm . RegisterModelWithPrefix ( "tb_" , new ( Admin )) }   func encodeBase64 ( b [] byte ) [] byte { return [] byte ( base64 . StdEncoding . EncodeToString ( b )) }   func decodeBase64 ( b [] byte ) [] byte { data , err := base64 . StdEncoding . DecodeString ( string ( b )) if err != nil { fmt . Printf ( "Error

beego Tutorial 9 : 비밀번호 단방향암호화(SHA512) 하기

정보통신망법, 개인정보보호법 등에 의하면 비밀번호는 단방향암호화(SHA256 등), 개인정보는 양방향암호화(AES256 등)를 하도록 되어 있습니다. 지금까지 작성한 예제는 이런 법에 맞지 않아서 서비스할 수 없겠네요. 여기에서는 비밀번호의 단방향 암호화를 구현해보도록 하겠습니다. 먼저, 기존 DB에 들어있던 사용자 정보를 모두 삭제합시다. $ cd $GOPATH / src / xyz $ sqlite xyz.db SQLite version 3.7.9 2011 - 11 -01 00: 52 : 41 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite > select * from tb_admin; 1 | testid1 | passwd1 | nick1 2 | testid2 | passwd2 | nick2 3 | testid3 | passwd3 | nick3 4 | testid4 | passwd4 | nick4 6 | admin | dpeltms3 | ADMIN sqlite > delete from tb_admin; sqlite > select * from tb_admin; sqlite > .quit xyz/models/admin.go  에 다음을 추가합니다. 이 부분이 실제로 SHA512 로 단방향암호화를 하는 부분입니다. ...   import ( "github.com/astaxie/beego/orm" "crypto/sha512" "encoding/hex" )   ...   func ( this * Admin ) SetPassword ( passwd string ) { sha := sha512 . New () sha . Write ([] byte ( pas

beego Tutorial 8 : 관리자 삭제하기

xyz/views/admin/index.html  에 다음을 추가한다. ...   < button onclick = "delete_admin('/admin/delete/{{$admins.Id}}')" class = "btn btn-default btn-xs" > 삭제 < / button >   ...   < script > function delete_admin(url) { var result = confirm("관리자를 정말로 삭제하시겠습니까?"); if( result == false ) return; location.href = url; } < / script >   ... xyz/models/admin.go  에 다음을 추가한다. ...   func ( this * Admin ) Delete ( id int ) { o := orm . NewOrm () o . Using ( "default" ) this . Id = id o . Delete ( this ) }   ... xyz/controllers/admin.go  에 다음을 추가한다. // 관리자 삭제 func ( c * AdminController ) Delete () { id , _ := strconv . Atoi ( c . Ctx . Input . Param ( ":id" )) admin := new ( models . Admin ) admin . Delete ( id )   c . Redirect ( c . UrlFor ( ".Index" ), 302 ) } xyz/routers/router.go  에 다음을 추가하고, 관리자 삭제를 해봅니다. beego . Rout

beego Tutorial 7 : 관리자 수정하기

xyz/views/admin/index.html  에서  비밀번호변경  버튼 오른편에  수정  버튼을 추가한다. ...   < a href = "/admin/chg_passwd_form/{{$admins.Id}}" class = "btn btn-default btn-xs" data-toggle = "modal" data- target = "#myModal" > 비밀번호변경 < / a > < a href = "/admin/update_form/{{$admins.Id}}" class = "btn btn-default btn-xs" data-toggle = "modal" data- target = "#myModal" > 수정 < / a >   ... xyz/views/admin/update_form.html  을 작성한다. < div class = "modal-header" > < button type = "button" class = "close" data-dismiss = "modal" aria- label = "Close" >< span aria-hidden = "true" > &times; < / span >< / button > < h4 class = "modal-title" > 관리자 수정 < / h4 > < / div > < div class = "modal-body" > < form name = "update_form" action