С Shiro.ini, как я могу заблокировать страницу зарегистрированных пользователей? (только НЕ зарегистрированный пользователь может видеть страницу) - PullRequest
0 голосов
/ 13 апреля 2019

Я должен "заблокировать" страницу login.xhtml для зарегистрированных пользователей, они должны выйти из системы, чтобы использовать страницу login.xhtml.

Я включил anon или authc в конфигурацию URL и после входа в систему все еще могу перейти в login.xhtml.

[main]
...
...
authc=org.apache.shiro.web.filter.authc.FormAuthenticationFilter
authc.loginUrl = /login.xhtml
[urls]
/javax.faces.resource/** = anon
/login.xhtml=anon
/admin/** = authc
/logout = logout
/** = anon

Я использую только файл shiro.ini для конфигурации (он не должен оставлять меня до выхода из системы)

Ответы [ 2 ]

0 голосов
/ 16 апреля 2019

Создать новый фильтр классов

public class OnlyNotAutenticated extends  AccessControlFilter{

String welcomeurl="";

@Override
protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) throws Exception {
     Subject subject = getSubject(request, response);
     return !subject.isAuthenticated(); // THE POINT

}

@Override
protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception {
    WebUtils.issueRedirect(request, response, welcomeurl);
    return false;//What to do if try to go to login -> go welcome page of auth ursers
}

public String getWelcomeurl() {
    return welcomeurl;
}

public void setWelcomeurl(String welcomeurl) {
    this.welcomeurl = welcomeurl;
}

}

в Широ.ини:

[main]
...
onlynot=edu.eci.cvds.security.OnlyNotAutenticated ; path of you filter
onlynot.welcomeurl=/bienvenida.xhtml ; url redirect if you try go to login.xhtml
[urls]
/=onlynot   ; this is if you <welcome-file> on web.xml is the login page. 
/login.xhtml=onlynot
0 голосов
/ 15 апреля 2019

Это зависит от того, что вы хотите сделать, когда авторизованный пользователь заходит на вашу страницу входа. Если вы просто хотите перенаправить их обратно на целевую страницу

Вы можете просто программно проверить, аутентифицирован ли текущий пользователь: https://shiro.apache.org/subject.html#the-currently-executing-subject

...