Getting the Login Name of the Currently Logged-In User

[b]This example retrieves the login name of the user that is running the application. [/b]


try {
String loginAppName = "GetLoginNameUnix";

// If the application is run on NT rather than Unix, use this name
loginAppName = "GetLoginNameNT";

// Create login context
LoginContext lc = new LoginContext(loginAppName,
new com.sun.security.auth.callback.TextCallbackHandler());

// Retrieve the information on the logged-in user
lc.login();

// Get the authenticated subject
Subject subject = lc.getSubject();

// Get the subject principals
Principal principals[] = (Principal[])subject.getPrincipals().toArray(new Principal[0]);
for (int i=0; i<principals.length; i++) {
if (principals[i] instanceof com.sun.security.auth.NTUserPrincipal
|| principals[i] instanceof com.sun.security.auth.UnixPrincipal) {
String loggedInUserName = principals[i].getName();
}
}
} catch (LoginException e) {
// Login failed
}


[b]The example requires a login configuration file that specifies the login modules to execute when using a particular login-app name. This configuration file specifies two login-app names: [/b]

GetLoginNameNT {
com.sun.security.auth.module.NTLoginModule required;
};

GetLoginNameUnix {
com.sun.security.auth.module.UnixLoginModule required;
};


[b]The login configuration file is specified at the command line: [/b]
> java -Djava.security.auth.login.config=myconfig.config MyApp
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值