亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

jdbcRealm 權限認證不了; 開關也打開了,sql語句在工具里驗證過,也沒錯; 權限就是不行; 登錄和角色都沒問題

@Test

public void testJdbc() {

DefaultSecurityManager securityManager = new DefaultSecurityManager();

JdbcRealm realm = new JdbcRealm();

// JdbcRealm要把數據源設上

realm.setDataSource(dataSource);

// 要查權限,則要打開開關; 因為默認是關閉的

realm.setPermissionsLookupEnabled(true);

// 自定義查詢認證的sql語句, 對照著原碼里的格式來寫

String sql = "select admin_password from admin where admin_name = ?";

realm.setAuthenticationQuery(sql);

// 自定義角色查詢

String roleSql = "select rolename from role r, admin a where r.roleid = a.roleid and a.admin_name = ?";

realm.setUserRolesQuery(roleSql);

// 自定義權限查詢

// String pSql = "select p.pname from admin a, permission p, rolepermission r where a.roleId = r.roleId and r.permissionId = p.permissionId and a.admin_name = ?";

String pSql = "select permission from testrole where user_name = ?";

realm.setPermissionsQuery(pSql);

securityManager.setRealm(realm);

SecurityUtils.setSecurityManager(securityManager);

Subject subject = SecurityUtils.getSubject();

UsernamePasswordToken token = new UsernamePasswordToken("admin", "1234");

// 認證

subject.login(token);

// 角色認證

subject.checkRole("管理員");

// 權限認證? <要先打開認證權限的開關>

subject.checkPermission("product:manager");

System.out.println("是否認證過:"+subject.isAuthenticated());

}


正在回答

3 回答

忽然看到了和你的差距:我的什么注釋都沒寫,你的寫的一清二楚,我的學習方法不對啊

1 回復 有任何疑惑可以回復我~
#1

sunbohan00

好的方法確實需要借鑒,但并不是全篇而論,注釋這個東西,如果初學者便于自己記住,或者為了日后看了還知道什么含義,最好加上,熟練的話,寫不寫即可,如果是在公司項目組中,關鍵步驟寫上注釋就好。
2018-12-19 回復 有任何疑惑可以回復我~

謝謝,我試試看;

0 回復 有任何疑惑可以回復我~

String pSql = "select permission from testrole where user_name = ?";

這里寫錯了哦,?查詢條件是role_name? ,?可以參考一下JdbcRealm源碼

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

jdbcRealm 權限認證不了; 開關也打開了,sql語句在工具里驗證過,也沒錯; 權限就是不行; 登錄和角色都沒問題

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號