最簡單的Shiro免密登陸(springboot)

2021-10-05 05:23:47 字數 2231 閱讀 3014

思路比較簡單,實現也簡單,要的就是簡單! 實際專案中可以此基礎上封裝

重寫usernamepasswordtoken 中 getcredentials() 方法。所以新增了類nopwdtoken

userrealm類中的dogetauthenticationinfo(authenticationtoken authctoken)方法執行時,判斷引數authctoken的型別如果是nopwdtoken型別,則返回值改為getcredentials()方法對應的驗證資訊。(即:******hash ******hash = new ******hash("sha-256", "123456", null, 16);)。

1、增加類:nopwdtoken(關鍵地方是20行重寫的方法)

import org.apache.shiro.authc.usernamepasswordtoken;

public class nopwdtoken extends usernamepasswordtoken

private string username;

public string getusername()

public void setusername(string username)

@override

public object getcredentials()

}

2、修改userrealm類中 的 dogetauthenticationinfo(authenticationtoken authctoken) 方法。(關鍵地方是2-13行)

// 判斷是否免密登陸型別

if (authctoken instanceof nopwdtoken) else

} else

測試:

/**

* 免密登陸

*/@syslog("免密登陸")

// 使用自定義token

nopwdtoken ssotoken = new nopwdtoken(username);

subject.login(ssotoken);

} catch (unknownaccountexception e) catch (incorrectcredential***ception e) catch (lockedaccountexception e) catch (authenticationexception e) catch (exception e)

sysuserentity sysuser = shiroutils.getuserentity();

sysuser.setpassword(null);

try catch (ioexception e)

return r.ok().put("user", sysuser);

}

傳送請求:http://localhost:9000/sys/nopwdlogin?username=yuer

其他問題:

1、如果加密型別和上方不同,可以參考 org.apache.shiro.authc.credential.hashedcredentialsmatcher 中 hashprovidedcredentials 方法。斷點打在這裡就可以看到了,如圖

2、使用者輸入密碼和實際密碼比較方法具體位置在 org.apache.shiro.authc.credential.hashedcredentialsmatcher 中 docredentialsmatch 方法。如下圖:

Linux免密登陸

a為本地主機 即用於控制其他主機的機器 b為遠端主機 即被控制的機器server 假如ip為172.24.253.2 a和b的系統都是linux 在a上的命令 ssh keygen t rsa 連續三次回車,即在本地生成了公鑰和私鑰,不設定密碼 ssh root 172 24.253 2 mkdir...

ssh 免密登陸

摘要 在本地生成公鑰私鑰對,並將公鑰上傳至 server 端實現免密登陸。1.使用 ssh keygen 生成金鑰 ssh keygen t rsa f filename在生成金鑰對時,會要求輸入 passphrase generating public private rsa key pair.e...

ssh免密登陸

有兩台linux機器 node1 172.16.160.92 node2 172.16.160.91 先在node1 172.16.160.92 這台機器操作 生產金鑰 ssh keygen t rsa p 回車把id rsa.pub追加到授權的key裡面去。cat ssh id rsa.pub s...