2014-11-07 4 views
1

Мы пишем JAVA WebApp с JAX-RS (Джерси), используя Shiro as Sequrity.shiro redirect by role on authentication webapp

Мы имеем:

  • 3 различные роли, каждый из них имеет собственную домашнюю страницу
  • Одна страница Войти для всех пользователей

Когда пользователь входит в систему, Как перенаправить пользователя на его собственном доме в соответствии с его ролью после аутентификации.

Некоторый код от Shiro INI:

authc.loginUrl = /login.html 

[urls] 
/apps/admin/** = authc, roles["admin"] 
/apps/teacher/** = authc, roles[teacher] 
/apps/student/** = authc, roles[student] 

Ex:

  1. Кто-то пытался получить доступ к нашему веб-приложение, и он будет перенаправлен на login.html
  2. После ввода имя пользователя/пароль он будет перенаправлен на свою домашнюю страницу с учетом роли
    • /apps/admin/home.html если он имеет Admin роль
    • /apps/teacher/home.html, если у него есть учитель роль
    • /приложения/студент/дома. HTML если он имеет студент роль

ответ

1

у меня было то же требование я сделал следующим образом .. ...

if (currentUser.isAuthenticated()) { 
     if (currentUser.hasRole("admin")) { 
      response.sendRedirect("app/admin/adminpage.jsp"); 
     } 
     else if (currentUser.hasRole("student") || currentUser.hasRole("admin")) {   
     response.sendRedirect("app/student/studentpage.jsp");   
     } 
    else if (currentUser.hasRole("teacher") || currentUser.hasRole("admin")) {  
     response.sendRedirect("app/teacher/teacherpage.jsp"); 
    } 
    } 
else { 
     response.sendRedirect("app/login.jsp"); 
    } 
+1

Большое спасибо. Я сделал то же самое, за исключением того, что использовал response.otherUrl). И я отредактировал ваш ответ для SAO aproach тоже, если его неправильно, пожалуйста, исправьте меня. – Erlan