1,在ApplicationController里添加几个辅助方法:
load_defaults得到当前登录的用户@current_user
helper_method让logged_in?方法可以在rhtml页面里使用
require_login是一些需要登录权限才能操作的action的before_filter
2,在Topic模型类里添加editable_by?方法:
这样可以在rhtml页面和controler里判断topic是否可以被@current_user编辑和删除
class ApplicationController < ActionController::Base
session :session_key => '_hilog_session_id'
before_filter :load_defaults
helper_method :logged_in?
protected
def load_defaults
@current_user =
if logged_in?
User.find(session[:user_id])
else
nil
end
end
def logged_in?
session[:user_id]
end
def require_login
redirect_to(new_session_url(:go_after => request.request_uri)) and return false unless session[:user_id]
end
end
load_defaults得到当前登录的用户@current_user
helper_method让logged_in?方法可以在rhtml页面里使用
require_login是一些需要登录权限才能操作的action的before_filter
2,在Topic模型类里添加editable_by?方法:
class Topic < ActiveRecord::Base
belongs_to :user
def editable_by?(account)
account && (account.id == user.id )
end
end
这样可以在rhtml页面和controler里判断topic是否可以被@current_user编辑和删除
评论
3,SessionController里控制登录后url转发:
class SessionController < ApplicationController
def new
session[:go_after] = params[:go_after] if params[:go_after]
end
def create
if @user = User.authenticate(params[:loginId], params[:password])
session[:user_id] = @user.id
redirect_to (session[:go_after] || params[:go_after] || blog_path(@user.loginId))
else
flash[:notice] = "用户名或密码不正确."
render :action => 'new'
end
end
def destroy
session.delete
flash[:notice] = "您已经注销."
redirect_to home_path
end
end
发表评论
- 浏览: 723142 次
- 性别:

- 来自: BJ

- 详细资料
搜索本博客
我的相册
screenshot
共 1 张
共 1 张
最近加入圈子
最新评论
-
Why OO sucks
看成去QQ SUCK 了
-- by xhanxhanxhan -
Rails的富文本编辑器插件 ...
有没有那个像textmate那种语法高亮的富文本编辑器?
-- by zllicho -
翻译www.djangobook.com之 ...
weiertzw 写道 1. >>> from django. ...
-- by chenjihua75 -
PHP、CakePHP哪凉快哪呆 ...
这孩子被java毒害太深。。。跳出java,你会发现外面的世界真的很大。
-- by woodless -
学习svn命令
只会用 apt-get 不是好孩子。
-- by smartly






评论排行榜