如何获得经过身份验证的用户?

时间:2015-07-07 15:25:41

标签: extjs

我正在关注“入门指南”'我有这个简单的Ext.js代码:

Ext.define('TutorialApp.view.Main', {
    extend: 'Ext.container.Container',
    requires:[
        'Ext.tab.Panel',
        'Ext.layout.container.Border'
    ],


    xtype: 'app-main',


    layout: {
        type: 'border'
    },


    items: [{
        region: 'west',
        xtype: 'panel',
        title: 'west',
        width: 150
    },{
        region: 'center',
        xtype: 'tabpanel',
        items:[{
            title: 'Center Tab 1'
        }]
    }],
    listeners: {
        afterrender: function () {
           alert('hi there')
        }
    }
});

我想知道如何获得"警告"弹出来说,"你好,红色"哪里"红"是刚刚成功执行基本身份验证的用户。

1 个答案:

答案 0 :(得分:1)

这取决于您是在访问整个页面时执行基本身份验证,还是仅在通过AJAX访问同一域上的受限区域的客户端应用程序上执行。

在第一种情况下,您需要服务器端将Basic auth用户名传递给客户端(否则JavaScript无法访问它)。这可以通过让服务器插入包含用户名的JavaScript的自定义位(以及可能只有服务器知道的其他有用的东西)来完成:

<script type="text/javascript">
window.CONTEXT = {
    // other useful stuff
    username: 'red'
}
</script>

完成上述操作后,您的提醒将是:

alert('Hi there ' + CONTEXT.username)

在第二种情况下(通过AJAX发送基本身份验证凭据),您的客户端将首先知道用户名,因此在身份验证成功后,它将知道警报中显示的名称。实际代码将取决于执行身份验证的组件,但一个好的方法是为其创建一个单例,它将具有执行身份验证的方法,告知用户是否经过身份验证以及用户名是什么。因此,您的提醒将简单地称之为:

alert('Hi there ' + TutorialApp.Auth.getUsername())