j_security_check用户的登入信息存储在哪?

在JBoss中实现用户安全认证
例如登入页面:
<form method="POST" action="j_security_check">
<input type="text" name="j_username">
<input type="password" name="j_password">
<input type="submit" name="login">
</form>
请问等入成功后用户的信息存储在什么地方,我做过尝试在SESSION中查找(JBOSS),但并没有存储在SESSION中.

我的想法是这样:用户以guest身份登入,当他要执行某个操作时,提示需要更高级的权限,需要重新以高级身份登入,可是在一个会话期间用户已经是登入过的,需要把以guest身份登入的信息清掉,可是我不知道信息放在哪!希望高手指点一下,
谢谢!

应该先看看。JAAS

request.getUserPrincipal()

可是getUserPrincipal()是有JBOSS容器自己实现的,怎么看哪!

由于J2EE标准没有规定统一的存储地方,所以,各个服务器是不一样的,建议从request.getUserPrinciple获得用户ID后,自行查询数据库后保存在session中,自己处理。

可参考Jdon框架应用news源码:
http://www.jdon.com/jdonframework/news.htm

看来你没有看什么JASS的资料就开始用

如果太依赖于容器提供的JASS实现。可能需求上很难够用,不同的容器,不同的实现,实在是累人

有一个思路,自己去实现,我觉得可以实现自己的LoginModule,Principal

并实现 基于RDBMS的Policy
guest 登陆时 生成一个guest 的 Principal 而这个guest Principal没有Permission
如果真实用户登陆 生成用户的Principal

在web程序中,我们可以有一个主控来做权限校验,

如 ,Subject.doAs(loginContext.getSubject(), new PrivilegedAction(){
public Object run(){
这里根据不同的请求生成相应的Permission e.g FilePermission f = new FilePermission("*","write");
AccessController.checkPermission(f);
做相应的后面的处理
return null;
}
});

我一直没搞明白jaas的authorize 这块东西有什么用,总觉的定的太死,不能由客户来随意修改(不知道谁有灵活应用的例子)。你说的问题我也不清楚,jsercurity_check好象是jaas规范定义的固定action名字。但是从设计方面来说,如果把客户登陆信息放在stack里是不是更好?这样当用户从高级别的身份退出后,还能保留前一级别的用户身份,就不用再重新登陆(原理有点类似unix下的su)

>不能由客户来随意修改(不知道谁有灵活应用的例子)。
只要更改一下jboss-web.xml配置文件即可,可以由客户随意修改的,灵活应用可见news例程:
http://www.jdon.com/jdonframework/news.htm

当然你也可以将acl做一个框架跟着你的应用一起部署,但是这样未免加重了应用系统,这些都取决于具体人的看法。

问:可以重载j_security_check 中的方法用来获得用户输入的明文密码么?