認可を理解する為にpythonで実装してみました〜
この前、認可と認証についての記事を読みました〜
認証は「むむ、あやしいやつ?…ではないな」っていう感じの確認ですね~
認可は…ちょっとわからなかったのですが、何でも、切符みたいなものなんだとか。
わからなかったら、とりあえず作ってみる!
というわけで電車の中で30分くらい揺られながら作ったのがこちらになります~
ticket.py
import uuid class Ticket(): def __init__(self): self.ticket_holder = [] def issue_a_ticket(self): ticket = uuid.uuid4() self.ticket_holder.append(ticket) return ticket def exact_ticket(self,your_ticket): if your_ticket in self.ticket_holder: print('Ok, that ticket is real.') self._destruct_ticket(your_ticket) else: print('what the hell! This ticket is fake!') def _destruct_ticket(self,target_ticket): self.ticket_holder.remove(target_ticket) if __name__ == '__main__': app = Ticket() get_ticket = app.issue_a_ticket() print(get_ticket) # success! app.exact_ticket(get_ticket) # failed 1 app.exact_ticket('bad_ticket') # failed 2, you can entry only once. app.exact_ticket(get_ticket)
実行結果
$ python ticket.py
8d5e2870-92c3-41f6-9502-5d152bfbf315 <-ここは毎回変わります~
Ok, that ticket is real.
what the hell! This ticket is fake!
what the hell! This ticket is fake!
チケット発行したらそのチケットを使って、
ある関数を実行する って感じですね〜
この時渡されるチケットが正しいものじゃないと、
このチケットはよろしくない旨のメッセージが出ます~
今回はメッセージを表示するだけですけど、なんかに使えそうな感じはしますね~
ちなみに、今回作ったチケットは一回限りのチケットになりますので、
2回目以降は正しいものでも偽物扱いされます〜
因みに、この入手したチケット、
なんと、別の方に渡す事も出来るのです〜
cacapon.py
from ticket import Ticket app = Ticket() class Cacapon(): def __init__(self): self.haveticket = '' def get_ticket(self,your_ticket): self.haveticket = your_ticket def use_ticket(self): app.exact_ticket(self.haveticket) if __name__ == '__main__': any_have_ticket = app.issue_a_ticket() cacapon = Cacapon() cacapon.get_ticket(any_have_ticket) cacapon.use_ticket()
実行結果
python cacapon.py Ok, that ticket is real.
anyさんが発行したチケットを
cacaponが使えてるのが分かるかと思います〜
これが、認可ってやつですかね?
こうやって作ってみると、何となくわかる気もしてきます~♪ これが認可ってやつかなぁいう感触は得られました♪
これの発展形としては
「無条件で発行しているところに制限を加える(認証機能の追加)」とか
「1日乗車券みたいに、失効タイミングを変更してみる」とか
…が思いつきます~もっと色々使えそうですね♪