RuoYi
CasdoorはRuoYi-cloudと簡単に統合できます。
ステップ1:Casdoorをデプロイする
Deploy Casdoor. See Server installation. Ensure the server is running (e.g. http://localhost:8000) and you can open the login page (e.g. http://localhost:7001) and sign in with admin / 123.
ステップ2:Casdoorを設定する
Casdoorで組織、アプリケーション、およびSynchronizerを設定します。 Notes:
- When editing the syncer, check the table columns:
. - When editing the organization, select the correct password type:
.
- Enable soft deletion.
ステップ3。 フロントエンドを改革する
3.1 Casdoorのログインページにジャンプする
Use a frontend SDK (e.g. vue-sdk). After initializing it, get the Casdoor login URL with getSigninUrl().
Wire the link as needed and remove any redundant RuoYi-Cloud login UI (e.g. account/password inputs).
3.2 Casdoorから返されたコードと状態を受け入れる
Casdoorを介して正常にログインした後、Casdoorは設定したページにコードと状態を送信します。 create()関数を使用してコードと状態を取得できます。
created() {
let url = window.document.location.href; // get URL
let u = new URL(url);
this.loginForm.code = u.searchParams.get('code'); // get code and state
this.loginForm.state = u.searchParams.get('state');
if (this.loginForm.code != null && this.loginForm.state != null) { // if code and state are not null, execute handleLogin
this.handleLogin();
}
}
RuoYi-Cloudの場合、元のアカウントとパスワードを送信する方法を変更して、代わりにコードと状態を送信するだけです。 したがって、変更はバックエンドに送信されるものに関してのみで、元のログインに関連しています。
ステップ4:バックエンドをリファクタリングする
4.1 フロントエンドから返されたコードと状態を受け入れる
@PostMapping("login")
public R<?> callback(@RequestBody CodeBody code) {
String token = casdoorAuthService.getOAuthToken(code.getCode(), code.getState());
CasdoorUser casdoorUser = casdoorAuthService.parseJwtToken(token);
if (casdoorUser.getName() != null) {
String casdoorUserName = casdoorUser.getName();
if (sysLoginService.getUserByCasdoorName(casdoorUserName) == null) {
sysLoginService.casdoorRegister(casdoorUserName); // Add this user to the database if they don't exist
}
}
LoginUser userInfo = sysLoginService.casdoorLogin(casdoorUser.getName()); // Get the user's information from the database
return R.ok(tokenService.createToken(userInfo));
}
この方法では、casdoor-SpringBoot-sdkメソッドを使用し、RuoYi-Cloudメソッドにわずかな変更を加えています。
たとえば、RuoYi-Cloudの元の方法は、パスワードでアカウントを登録します。 それをcasdoorRegisterメソッドを使用してアカウントを登録するように変更しました。
また、アカウントが存在するかどうかを確認するgetUserByCasdoorNameメソッドを追加し、executeUserInfoメソッドをexecuteWithAccountに変更しました。
これは簡単な変更です。パスワードをチェックする部分を削除するだけです。