2013-10-11 5 views
2

Я хочу перенаправить пользователя после входа на его личную страницу? , У меня есть 3 пользователей, например, дляКак перенаправить пользователя на свою личную страницу после авторизации с помощью apache shiro

  1. администратор имеет доступ ко всем страницам
  2. студент имеет доступ к страницам по каталогу студентов
  3. учителя имеют доступ к страницам по каталогу учителей

как сделать это?

Любая помощь или идея?

Update вот мой shiro.ini

[main] 
ds = org.apache.shiro.jndi.JndiObjectFactory 
ds.requiredType = javax.sql.DataSource 
ds.resourceName = jdbc/myDataSource 
ds.resourceRef = true 
jdbcRealm = org.apache.shiro.realm.jdbc.JdbcRealm 

# password hashing specification 
sha256Matcher = org.apache.shiro.authc.credential.HashedCredentialsMatcher 
sha256Matcher.hashAlgorithmName=SHA-256 
jdbcRealm.credentialsMatcher = $sha256Matcher 

jdbcRealm.permissionsLookupEnabled = true 
jdbcRealm.authenticationQuery = SELECT password FROM users WHERE username = ? 
jdbcRealm.userRolesQuery = SELECT role_name FROM user_roles WHERE username = ? 
jdbcRealm.permissionsQuery = SELECT roleper FROM roles_permissions WHERE role_name = ? 

jdbcRealm.dataSource = $ds 
authc = com.java.MyFilter 
jdbcRealm.authorizationCachingEnabled = false 

# specify login page 
authc.loginUrl = /login.jsp 

# redirect after successful login 
authc.successUrl = /home.jsp 

# roles filter: redirect to error page if user does not have access rights 
roles.unauthorizedUrl = /accessdenied.jsp 


# request parameter with login error information; if not present filter assumes 'shiroLoginFailure' 
authc.failureKeyAttribute = simpleShiroApplicationLoginFailure 


[urls] 


/login.jsp = authc 

# only users with some roles are allowed to use role-specific pages 
/admin/** = authc,roles[admin] 
/stu/** = authc,roles[student] 
/teach/** = authc,roles[teacher] 


# enable authc filter for all application pages 
/ApacheShiroDemo/** = authc 
+0

Вы используете сиро входа в фильтр или ваш логин custome? И что вы пробовали? Это в контексте веб-приложения? –

+0

@ Sotirios Delimanolis, так как вы можете видеть authc.successUrl = /home.jsp, не может ли это быть authc.successUrl = /teach/teacherpage.jsp или /stu/studentpage.jsp в зависимости от того, кто зашел? жаль, что я использую фильтр по умолчанию в настоящее время .. –

+0

Если у вас есть пользовательский логин, почему вы просто отправляете перенаправление на основе типа учетной записи? –

ответ

1

я сделал, как это на моем пути, используя разрешения ... в моей странице Jsp

 if (currentUser.isAuthenticated()) { 

     MyRealm myRealm = new MyRealm(); 
     Connection conn = ConnectionProvider.getConnection(); 
     String username = currentUser.getPrincipals().toString(); 
     String defaultpage = myRealm.getDefaultPage(conn, username); 

     if (currentUser.hasRole("admin")) { 
      response.sendRedirect("admin/adminpage.jsp"); 
     } 
     else if (currentUser.hasRole("student")) { 

     if (defaultpage.equalsIgnoreCase("teacherpage") && currentUser.isPermitted("page:teacherpage")) {        
     response.sendRedirect("teacher/teacherpage.jsp"); 
     } else{ 
     response.sendRedirect("student/studentpage.jsp"); 
     } 
    } 
    else if (currentUser.hasRole("teacher")) { 

     if (defaultpage.equalsIgnoreCase("studentpage") && currentUser.isPermitted("page:studentpage")) {        
     response.sendRedirect("teacher/studentpage.jsp"); 
     } else{ 
     response.sendRedirect("student/teacherpage.jsp"); 
     } 
    } 
Смежные вопросы