/ / Authenticate Session s Apache Shiro pomocou ID relácie - apache, validácia, session, shiro

Overenie relácie pomocou aplikácie Apache Shiro pomocou ID relácie - apache, validácia, relácia, shiro

Mám súbor cookie ID relácie vygenerovaný bezpečnostným rámcom shiro a je odovzdaný v každej žiadosti. Existuje nejaký spôsob, ako potvrdiť ID relácie, je platné v súbore shiro.

Pokúšam sa s nižším kódom odovzdaním ID relácie.

 Subject requestedSubject = new Subject.Builder().sessionId(sessionId).buildSubject();
return !(requestedSubject.getSession(false) == null);

Získanie nižšej výnimky

"exceptionClass": "trieda java.lang.IllegalArgumentException " "RESTMethod": "GET", "message": "SessionKey musí byť HTTP kompatibilný implementácia. "," rootCausePointClass ": "Org.apache.shiro.web.session.mgt.ServletContainerSessionManager" "rootCausePointMethod": "getSession"

Je všetko zlé, čo robím, alebo existuje iný spôsob, ako overiť ID relácie.

odpovede:

1 pre odpoveď č. 1

Nedali ste veľa podrobností a vaša presná otázka je trochu nejasná.

Shiro spravuje schôdzky a overovanie relácie, je to vstavané do rámca a zvyčajne by ste sa nemuseli zaoberať mechanikami toho, ako shiro kontroluje / potvrdzuje relácie.

Ďalšia vec, ktorá nie je jasná z otázky, je váš technologický stoh. Je to webová aplikácia? Existujú nejaké iné knižnice tretích strán, napríklad Spring? Tu je ale navádzať.

Dávajte pozor, aby relácia (dokonca aj platná relácia) neznamená, že sa používateľ prihlásil alebo overil.

Ak chcete získať aktuálneho používateľa zo stránky shiro:

Subject currentUser = SecurityUtils.getSubject();

Potom zistíte, či je to "známy" používateľ, skontrolujte, či neexistuje null null:

User user = (User) currentUser.getPrincipal();

Znova je vaša otázka neurčitá, ale dúfam, že vás vedie správnym smerom.