`
hideto
  • 浏览: 2678218 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

实战Hilog笔记三:@current_user/logged_in?/require_login/editable?

阅读更多
1,在ApplicationController里添加几个辅助方法:
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编辑和删除
分享到:
评论
1 楼 hideto 2007-07-13  
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

相关推荐

    redux-hypercube:由内存超立方体支持的Redux状态机生成器。 前端模型检查

    示例:用户登录流程维度:[状态,请求,验证] 成员:[ [LOGGED_OUT,LOGGED_IN], [LOGIN_IDLE,LOGIN_PENDING], [VALID,INVALID], ] 这将产生具有16种可能性的3D立方体: LOGGED_OUT / LOGIN_IDLE / VALID ...

    php.ini-development

    Current working directory (except CLI) ; 5. The web server's directory (for SAPI modules), or directory of PHP ; (otherwise in Windows) ; 6. The directory from the --with-config-file-path compile ...

    Flask框架Flask-Login用法分析

    from flask_login import LoginManager, UserMixin, login_required, login_user, logout_user, current_user from sqlalchemy import create_engine, Column, String, Integer from sqlalchemy.ext.declarative ...

    Web开发-Flask Login登录成功返回上一页-Python源码示例.zip

    from flask_login import LoginManager, login_required, login_user, logout_user, current_user app = Flask(__name__) login_manager = LoginManager() login_manager.init_app(app) @login_manager.user_...

    Login_System_v.2.0 from US

    This a login System, it has 3 files login.php register.php lastmember.php once a user has been logged in it will return him/her to the home page. to see if they are logged in use the code at the ...

    Flask Login登录成功返回上一页.rar

    return 'Welcome, logged in user!' ``` 4. **登录过程**:实现登录视图,处理用户提交的登录表单,验证身份后进行登录操作。 ```python @app.route('/login', methods=['GET', 'POST']) def login(): if request....

    lt-server:用于运行指标服务器和下载重定向服务的服务器端代码

    安装在运行Ubuntu 20.04...db_user@127.0.0.1:27017/lt_logged_data" 使用secrets/mongo_password的密码,然后可以: &gt; db.activity.find() 归因我们从IP2Location LITE数据中获取位置数据: ://lite.ip2location.com。

    ofbiz权限数据模型

    例如,通过USER_LOGIN记录用户的身份和权限,USER_LOGIN_HISTORY跟踪登录活动,USER_LOGIN_PASSWORD_HISTORY管理密码更改历史,而USER_LOGIN_SESSION则处理用户会话的生命周期。这些模型的组合使得OFBiz能为各种规模...

    IMS注册及CALL SIP信令分析

    1. IMS_SIP_INVITE/INFORMAL_RESPONSE:这是IMS MO CALL SIP信令的第一个消息,主要包含 Subscription ID、Version、Direction、SDP Presence、SIP Call ID Length、SIP Message Length、SIP Message Logged Bytes、...

    node-wp-authenticator:使用WordPress cookie通过节点对用户进行身份验证

    这个仓库是从Nightgunner5 / node-wordpress-auth分叉的。 由于原始项目无法在新的节点版本上运行,并且不再由原始作者维护,因此我决定更新代码以使其正常运行,并基于... logged_in_salt: 'LOGGED_IN_SALT from wp-c

    koa-bookshelf-api-starter:使用Koa和书架的入门api

    koa-bookshelf-api 带书架和Passport入门文件的... 样本: - Login : http://localhost:1337/api/login (Post)- Logout : http://localhost:1337/api/logout- Logged in?: http://localhost:1337/api/loggedin - Creat

    基于Python的使用多个装饰器判断用户操作权限.zip

    if not is_logged_in(): # 假设is_logged_in()检查用户是否已登录 print("您需要先登录才能执行此操作") return None return func(*args, **kwargs) return wrapper @require_login def delete_user_account()...

    XPC_DISPLAY_LOGGED_​DATA:xpc_display_logged_data 是一个用于快速显示记录数据的 GUI。-matlab开发

    &gt;&gt; xpc_display_logged_data 是一个图形用户界面 (GUI),它可以帮助 xPC 目标用户查看在 PC 系统上执行之前的 xPC 目标应用程序的记录数据。 必须通过设置输出块和 tout 来启用记录数据,并在诊断下的 Simulaiton ...

    WordPress判断用户是否登录的代码

    `is_user_logged_in()` 是一个非常实用的内置函数,它可以帮助我们轻松地判断当前访问网站的用户是否已经登录。这个函数的核心作用是返回一个布尔值,即 `true` 或 `false`,分别代表用户已登录和未登录。 函数说明...

    一个python爬虫反爬机制及具体实例

    1. **User-Agent检测**: - 网站会检查HTTP请求头部中的`User-Agent`字段,以此判断请求是否由浏览器或爬虫发出。很多网站默认只允许来自常见浏览器的访问。 2. **IP限制**: - 当某个IP地址在短时间内发起过多...

    duolingo-js:使用 Duolingo API 并启动您的 Node.js 应用程序(非官方)

    @grimille/duolingo-js [2021 更新] 使用 Duolingo API 并启动您的 Node.js 应用程序(非官方) 这是 WIP,请随时与我联系以获取补充或任何问题。 :owl: 安装 使用 npm 安装此依赖项。... let logged = await client

    magento 常用的方法总结

    可以使用 `Mage::helper('customer')-&gt;isLoggedIn()` 方法来检查客户是否登录,使用 `Mage::helper('customer')-&gt;getCustomer()` 方法来获取客户信息。 七、获取后台用户登录信息 可以使用 `Mage::getModel('admin...

    python算法数据结构课程视频含代码之位操作1G

    def set_user_logged_in(self, user_id): if user_id &gt;= self.num_users: raise ValueError("User ID out of range") self.bit_map |= (1 &lt;&lt; user_id) def is_user_logged_in(self, user_id): if user_id &gt;= ...

Global site tag (gtag.js) - Google Analytics