`
s8186255
  • 浏览: 87879 次
  • 性别: Icon_minigender_1
  • 来自: 新疆乌鲁木齐
社区版块
存档分类
最新评论

使用restful authentication 插件实现邮件激活功能

阅读更多

1.安装;
2.创建模型,这里有比较多的选项,下面的例子是创建带有激活功能的模型;
ruby script/generate authenticated user sessions --include-activation

a.创建了三个模型,user.rb,user_mailer.rb,user_observer.rb
user.rb定义了用户模型。
user_mailer定义了邮件模型;
user_observer定义了观察模型;

b.创建了两个控制器:sessions_controller.rb;users_controller.rb;session控件用于登录;user控件用户注册等功能。

c.创建了几个视图文件:
sessions/new.html.erb
users/new.html.erb
user_mailer/activation.html.erb
user_mailer/signup_notification.html.erb

然后rake

 

3.修改route.rb,让显示变得更加人性化
#
 map.activate '/activate/:activation_code', :controller => 'users', :action => 'activate' 
 map.signup '/signup', :controller => 'users', :action => 'new' 
 map.login '/login', :controller => 'sessions', :action => 'new' 
 map.logout '/logout', :controller => 'sessions', :action => 'destroy' 

4.在initialize目录下创建一个文件,进行在系统的初始化过程中,加载
ActionMailer::Base.delivery_method = :smtp 
 ActionMailer::Base.smtp_settings = { 
     :address => "mail.sina.com", 
     :port => 25, 
     :domain => "mail.sina.com", 
     :authentication => :login, 
     :user_name => "test@sina.com", 
     :password => "helloc" 
 }

mail.sina.com是smtp服务器,须准确配置这个服务器。
这里稍作解释
ActionMailer是基于Net::snmp封装,
delivery_method采用smtp
smtp_settings,就是smtp传递邮件使用的各类参数,包括smtp服务器的地址,域名,端口,采用什么验证方式(这里有三种plain,login,md5),用户名,密码
至此,用户注册的时候已经可以顺利发送邮件了。
邮件内容如下:
[YOURSITE] Please activate your new account  日期:  2010-03-17 23:46
Your account has been created.
Username: test
Password: 111111
Visit this url to activate your account:
http://YOURSITE/activate/228f5fe94f24134fbbf3234bad236404c71f2509
5.写清楚自己的网站。
在config/envirments/production.rb或者development.rb增加如下:
SITE_URL  = "wooxo.cc" 
注意:修改了这个文件,需要重新启动web服务;
包括前面在initialize目录新增了一个文件,也是需要重启服务,才可以生效。
6.当然需要在models/user_mailer.rb
7.修改邮件的内容。
views/users/user_mailer/sign_up_notification.erb.html
原文:
Your account has been created.

  Username: <%= @user.login %>
  Password: <%= @user.password %>

Visit this url to activate your account:

  <%= @url %>
同样需要重启服务,才能生效。
8.差点遗漏一个要点。配置enviroment.rb
config.active_record.observers = :user_observer
目的让 user_observer和user集合关联。
  def after_create(user)
    UserMailer.deliver_signup_notification(user)
  end

  def after_save(user)
    UserMailer.deliver_activation(user) if user.recently_activated?
  end
可以看到,这个user_observer模型,为了盯住user这个模型,一旦user这个模型在创建或者保存的时候,就调用usermailer这个模型。
这样User/UserMailer/UserObserver三个模型就紧密的结合在一起。

 

这里稍微做一个解释,原来有文档说net::smtp只发送本地smtp服务器的说法不准确。

 

附说明:

实际上actionmail是在net::smtp之上的一个封装,当然封装的内容不止这些。但是从发信这个功能,就是基于这个包。下面介绍一个使用纯ruby代码通过smtp发送邮件的案例:

require "net/smtp" 
  
 # params :  
 #   ARGV[0] = subject 
 #   ARGV[1] = content 
 #   ARGV[2] = filename 
 #   ARGV[3] = to 
  
 def sendemail(subject,content,to=nil) 
     from = "test@sina.com"#自己的邮箱 
     to = ["test1@163.com"] if to.nil?#发送对象邮箱 
     sendmessage = "Subject: "+subject +"\n\n"+content#拼装一份邮件体。 
     smtp = Net::SMTP.start("mail.xj.net",25,"xj.net",'test','test123',:login) #准确的使用smtp服务器的域名,以及smtp验证信息。
     smtp.send_message sendmessage,from,to  #这才是干货,做开始进行发送
     smtp.finish  #发送完毕之后,关闭连接。
 end 


 def sendemail_file(subject,filename,to) 
     content = "" 
     File.open(filename) do |file| 
       file.each_line {|line| content += "#{line}\n" } 
     end 
     sendemail(subject,content,to) 
 end 
  


 subject = ARGV[0] || "system autoly send" 
 content = ARGV[1] || "" 
 filename = ARGV[2] || "" 
 to = ARGV[3]  
  
 if content.to_s == "" and filename.to_s!="" 
     sendemail_file(subject,filename,to) 
 else 
   content = "Nothing" if content.to_s == "" 
   sendemail(subject,content,to) 
 end
保存为sendmail.rb

在ruby环境下,执行:

ruby sendmail.rb this is a test mail
这样会在system1@163.com收到一份主题为"this is a test mail"的邮件。

 

再附:net::smtp.start的参数,有三种方式;

# PLAIN
Net::SMTP.start('your.smtp.server', 25, 'mail.from.domain',
                'Your Account', 'Your Password', :plain)
# LOGIN
Net::SMTP.start('your.smtp.server', 25, 'mail.from.domain',
                'Your Account', 'Your Password', :login)

# CRAM MD5
Net::SMTP.start('your.smtp.server', 25, 'mail.from.domain',
                'Your Account', 'Your Password', :cram_md5)

 

在编写控制器的时候,完全可以使用smtp包,直接发送邮件。

 

1
0
分享到:
评论
1 楼 adidaskebi123 2010-03-29  
哎,以前用这插件就没细搞!插件写的还是有点大!希望再出点更详细的说明哦!呵呵

相关推荐

    谷歌浏览器restful请求插件

    RESTful API设计简洁、直观,易于理解和使用,是现代Web服务的主流实现方式。 **前端与后端交互** 在Web应用中,前端负责用户界面的展示和交互,而后端则处理业务逻辑和数据存储。RESTful请求插件扮演着两者之间的...

    关于Rails登录和验证插件http_authentication restful-authentication

    通过使用restful-authentication,开发者可以快速实现一套完整的用户认证系统,包括注册、登录、密码重置等功能,同时保持代码的整洁和可维护性。然而,随着Rails的发展,这个插件逐渐被devise等现代认证解决方案所...

    谷歌浏览器 发送restful 请求插件

    标题中的“谷歌浏览器发送RESTful请求插件”指的是在Google Chrome浏览器中使用的扩展程序,用于方便地发送RESTful API请求。REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于...

    chrome restful测试插件postman

    尽管最初是作为Chrome浏览器的插件,但随着其功能的发展,Postman现在也提供了独立的应用程序版本,支持Windows、Mac和Linux等操作系统。 在Chrome版本54.0.2840.87 m中,Postman v4.0.5版本可以正常运行,这意味着...

    idea 插件 Restful Fast Request - API Buddy

    它是一个功能强大的Restful API工具包插件,可以根据已有的方法快速生成接口调试用例。它有一个漂亮的界面来完成请求、检查服务器响应、存储你的API请求和导出API请求,该插件能帮助你在IDEA内更快更高效地调试API!...

    最新版Restful Fast Request插件,免费版

    将此jar与原来的进行替换即可(不排除后续无法使用情况,当前使用版本为2023.1.6)。 替换路径: 打开安装目录: C:\Users\XXX\AppData\Roaming\JetBrains\IntelliJIdea2023.1\plugins\Restful Fast Request\lib,...

    Vue结合SpringBoot注册发送邮件激活.zip

    本项目“Vue结合SpringBoot注册发送邮件激活”旨在实现用户注册时通过电子邮件验证其身份的功能,这在很多网站中是常见的安全措施。下面将详细解释实现这一功能的关键步骤和技术要点。 1. **Vue.js 前端**: - **...

    Restful Fast Request插件逆向

    本资源类似于 Postman 的 IDEA 插件Restful Fast Request,在IDEA安装该插件后,找到插件安装目录,【C:\\Users\\Administrator\\AppData\\Roaming\\JetBrains\\IntelliJIdea2021.3\\plugins\\Restful Fast Request ...

    SpringMVC 使用 RESTful 架构实现 CRUD 操作

    在本教程中,我们将探讨如何使用 SpringMVC 实现基于 RESTful 风格的 CRUD(Create、Read、Update、Delete)操作。 **CRUD 操作概述** CRUD 操作是任何数据驱动应用的基础,它们分别代表创建新记录、读取现有记录、...

    RESTful Web Service实现转账

    本文将深入探讨如何利用RESTful架构来实现转账业务,同时关注事务处理和并发控制这两个关键领域。 首先,让我们理解REST(Representational State Transfer,表述性状态转移)的核心原则。REST是一种网络应用程序的...

    SpringCloud-Ribbon,使用RestfulTemplate实现负载均衡练习

    本练习将详细介绍如何使用RestfulTemplate与Ribbon结合,实现基于高可用性的负载均衡。 首先,让我们理解什么是Ribbon。Ribbon是Netflix开源的一个客户端负载均衡器,它可以在客户端进行服务请求时自动分发请求到...

    SpringBoot+Mybatis+CXF框架,实现Restful api与 WebService api接口的大实验

    描述:本实验使用SpringBoot、Mybatis和CXF框架来实现Restful API和WebService API接口的大实验,涵盖了数据库设计、 Maven依赖管理、Restful API和WebService API的实现等方面。 标签:spring boot、mybatis、...

    c c++实现http服务 c c++开发restful api服务

    本文将深入探讨如何使用C和C++来实现HTTP服务,并开发RESTful API服务器。 首先,HTTP(超文本传输协议)是互联网上应用最为广泛的一种网络协议,用于从万维网服务器传输超文本到本地浏览器。它是一个基于请求与...

    RESTful 使用CXF实现(一)

    本篇文章将探讨如何使用Apache CXF框架来实现RESTful服务。Apache CXF是一个开源的Java框架,用于构建和开发SOAP和RESTful Web服务。 首先,我们需要了解RESTful的基本概念。REST(Representational State Transfer...

    IDEA Fast xxx Request

    本资源为IDEA中的插件,插件版本是1.7,如果有使用或者需要使用的,请把插件名称写在评论区供他人了解,谢谢! 插件地址: C:\Users\XXX\AppData\Roaming\JetBrains\IntelliJIdea2023.1\plugins\Restful Fast ...

    C++实现 Https Server 支持 restful json

    本文将深入探讨如何使用C++实现一个支持RESTful JSON的HTTPS服务器。RESTful架构是现代Web服务的标准设计模式,JSON则是一种轻量级的数据交换格式,广泛用于HTTP通信。 首先,我们需要了解HTTPS协议。HTTPS是在HTTP...

    Spring实现RESTful Web 服务Demo

    本教程将通过一个名为"spring-mvc-demo"的项目,详细介绍如何使用Spring框架来实现RESTful Web服务。 一、Spring MVC与RESTful Web服务 Spring MVC是Spring框架的一部分,专门用于处理Web请求和响应。RESTful Web...

    cxf webservice restful实现

    - 使用CXF的WS-Security功能,可以实现安全验证,如OAuth、基本认证等。 - 利用CXF的测试工具,如CXFTestSupport,可以方便地进行服务端和客户端的集成测试。 - 使用Postman等工具,可以模拟客户端对服务端的HTTP...

Global site tag (gtag.js) - Google Analytics