sinatra制作简易登录页面
来源:互联网 发布:淘宝假货 猪哼少 编辑:程序博客网 时间:2024/05/20 02:27
sinatra 是基于ruby语言实现的http路由框架,通过sinatra可以高效率实现web框架,要想了解sinatra的流程,可以参考
http://wangsheng2008love.blog.163.com/blog/static/7820168920133145425544/
http://www.sinatrarb.com/intro-zh.html
本文中用到了erb模板,其风格与php类似,就是在html中通过嵌入<? ... ?> 执行ruby语句、<?= ...?>执行ruby语句并给html中的变量赋值,比如:
<meta http-equiv="refresh" content="10"><h2>ttt.c</h2><%str = ""File.open(".ttt.c") do |file|while line = file.gets str += line str += "<br>"endfile.close();end%><%= str %>这里实现的是读取文件内容,并定时10秒进行刷新
好了废话不多说了,下面开始介绍使用sinatra框架 + erb模板,开发登录页面login.rb的过程,lgoin.rb文件的内容如下:
require 'rubygems' #注意:如果你的Ruby版本低于1.9,需要在代码第一行添加:"require 'rubygems'"require 'sinatra'require 'sass'require 'digest/md5'use Rack::Session::Pool, :expire_after => 120configure do enable :sessions set :username, 'frank' set :passwordmd5, '0efe415c937f6858550a6378f4f3f374' #'sinatra'endget '/' do if session[:admin] == true redirect to('start') else redirect to('login') endendget '/login' do erb :loginendpost '/login' do if params[:username] == settings.username && Digest::MD5.hexdigest(params[:password]) == settings.passwordmd5 session[:admin] = true redirect to('start') else erb :login endendget '/start' do halt(401,'Not Authorized') unless session[:admin] erb :startendget '/logout' do session.clear redirect to('/login')end其中,use Rack::Session::Pool, :expire_after => 120 表示,session的过期时间为120秒,即登陆了成功后,120秒内无操作,session将无效
然后:
configure do enable :sessions set :username, 'frank' set :passwordmd5, '0efe415c937f6858550a6378f4f3f374'end表示,启用session功能,并将用户名固定为frank,密码的MD5值
之后就是对http请求进行路由,其中get、post都是指http的请求类型。比如,
get '/' do if session[:admin] == true redirect to('start') else redirect to('login') endend表示sinatra收到针对根的get请求后,会读取session中保存的admin,如果为true,说明已经成功登录,就会将请求直接路由到start页面,否则将会路由到login页面。
get '/login' do erb :loginend表示收到对login页面的请求后,将显示erb模板login的内容,即login.erb文件。通常模板文件都会保存在views目录下,login.erb的内容如下:
<form action="/login" method="post"> Name: <input type="text" name="username" /> Password: <input type="password" name="password" /> <input type="submit" value="Log in" /></form>就是定义了一个username文本框、password密码框、一个提交按钮。按下这个按钮就会触发post操作
post '/login' do if params[:username] == settings.username && Digest::MD5.hexdigest(params[:password]) == settings.passwordmd5 session[:admin] = true redirect to('start') else erb :login endend这里针对login页面的post操作进行处理,判断用户名、密码的md5是否验证通过,如果验证通过则将session中的admin置为true,然后重定向页面到start,否则将重新显示登录页面。
get '/start' do halt(401,'Not Authorized') unless session[:admin] erb :startend浏览器请求start页面,如果没有登录成功,会触发401错误,并显示Not Authorized
执行ruby -o 0.0.0.0 -p 80 login.rb命令,在浏览器中输入服务器的ip,就可以开始登录页面了
0 0
- sinatra制作简易登录页面
- 回车登录页面制作
- Sinatra
- sinatra
- JSP+Servlet登录页面制作
- 登录注册的页面制作
- SenchaTouch 2 一个简易的登录页面
- 网页制作:一个简易美观的登录界面
- 利用asp.net制作登录页面
- 利用asp.net制作登录页面
- HTML5和CSS3登录页面制作实录
- 使用ServletRequest制作的登录页面
- extjs制作ajax登录的页面
- JSP制作登录页面:login.jsp
- AutoLogin 自动登录页面的制作
- 安卓登录页面的制作
- MVP架构模式制作登录页面
- 简易 的QQ APP登录以及注册页面的实现
- Fiddler 教程
- python读取二进制文件
- poj2255
- [C++]LeetCode: 29 Maximum Depth of Binary Tree
- hdu 4865 Peter's Hobby 2014 Multi-University Training Contest 1
- sinatra制作简易登录页面
- linux 实现共享文件共享
- php 数组,常用函数
- BZOJ 2190: [SDOI2008]仪仗队
- HTTP协议详解
- 黑马程序员———网络编程
- 014JavaAPI文档
- 在Hadoop中,将Path对象转换为字符串输出
- arm-linux中断机制之一:中断产生至进入do_asm_IRQ分析