2011-04-13 112 views
0

我有cotnrol_admin:ExtJS的登录窗口+轨

def login 
    if request.post? 
     if params[:full_name] == "mg" && params[:password] == "123" 
     data = { :success => 'true', :msg => "Welcome, #{params[:full_name]}"} 
     #redirect_to :action => :welcome 
     #render :action => :welcome 
     else 
     data = { :failure => 'true', :msg => "Username or Password wrong !"} 
     end 
     render :text => data.to_json, :layout => false 
    end 
    end 

我有这个login.js

var loginForm = new Ext.form.FormPanel({ 
    baseCls: 'x-plain', 
    labelWidth: 75, 
    url:'/admin/login', 
    defaultType: 'textfield', 
    items: [{ 
     fieldLabel: 'Login', 
     name: 'full_name', 
     anchor:'90%' // anchor width by percentage 
    },{ 
    fieldLabel: 'Password', 
    name: 'password', 
    inputType: 'password', 
    anchor: '90%' // anchor width by percentage 
}], 
buttons: [{ 
    text: 'Login', 
    handler: function() { 
     loginForm.getForm().submit(
      { 
       method: 'POST', 
       waitMsg:'Submitting...', 

       reset : false, 
       success : function() { 
        loginWindow.close(); 

       }, 
       failure: function(form, action){Ext.Msg.alert('Error',action.result.text)} 
      }); 
     } 
    }] 

}); 

var loginWindow = new Ext.Window({ 
    title: 'Login', 
    width: 300, 
    height:140, 
    closable:false, 
    minWidth: 300, 
    minHeight: 140, 
    layout: 'fit', 
    plain:true, 
    modal:true, 
    bodyStyle:'padding:5px;', 
    items: loginForm 
}); 
Ext.onReady(function(){ 
    loginWindow.show(this); 
}); 

所以我的问题是:万物pefectly工作。但是当我按刷新按钮这个登录表单又来了,我怎么能避免这种情况?我想到会议。对?但如何将会话集成到extJS或rails?

回答

1

是的,你虽然正确,你需要使用会话。如果你是初学者,请阅读session management。 RoR相关的会话详情可以在here找到。

当您第一次登录时,如果用户提供了正确的信息..您需要创建会话并在其中存储一些信息(用于验证会话)。当使用再次击中URL时,首先需要检查会话是否有效。如果有效,您可以简单地将用户转发到应用程序主页。否则,将再次显示登录页面。