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

05-03-30 hello kitty
    

在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身份登入的信息清掉,可是我不知道信息放在哪!希望高手指点一下,

谢谢!

    

jody
2005-03-30 13:25

应该先看看。JAAS

request.getUserPrincipal()

hello kitty
2005-03-31 10:22

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

banq
2005-03-31 10:40

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

可参考Jdon框架应用news源码:

http://www.jdon.com/jdonframework/news.htm

jody
2005-03-31 17:04

看来你没有看什么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;

}

});

2Go 1 2 下一页