com.comp.pruebaconshiro.ShiroAuthService.java Source code

Java tutorial

Introduction

Here is the source code for com.comp.pruebaconshiro.ShiroAuthService.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.comp.pruebaconshiro;

import java.io.Serializable;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.config.IniSecurityManagerFactory;
import org.apache.shiro.util.Factory;
import org.apache.shiro.mgt.SecurityManager;
import org.apache.shiro.session.Session;
import org.apache.shiro.subject.Subject;

/**
 *
 * @author cristian.palacio
 */
public class ShiroAuthService {

    public ShiroAuthService() {
        Factory factory = new IniSecurityManagerFactory("./src/main/webapp/WEB-INF/shiro.ini");
        SecurityManager securityManager = (SecurityManager) factory.getInstance();
        // Make the SecurityManager instance available to the entire application
        // via static memory:
        SecurityUtils.setSecurityManager(securityManager);
    }

    public void testAuth() {

        // simulate a username/password (plaintext) token created in response to
        // a login attempt:
        UsernamePasswordToken token = new UsernamePasswordToken("usuario", "cristian");
        token.setRememberMe(true);

        boolean loggedIn;
        Session session = null;
        Subject currentUser = SecurityUtils.getSubject();

        try {
            currentUser.login(token);
            session = currentUser.getSession();
            System.out.println("Session Id: " + session.getId());
            loggedIn = true;
        } catch (Exception ex) {
            loggedIn = false;
        }

        Serializable sessionId = session.getId();
        if (loggedIn) {

            Subject requestSubject = new Subject.Builder().sessionId(sessionId).buildSubject();
            System.out.println("Es admin = " + requestSubject.hasRole("admin"));//Should return true
            System.out.println("Is Authenticated = " + requestSubject.isAuthenticated());//Should return true
            System.out.println("Is Remembered = " + requestSubject.isRemembered());
        } else {
            System.out.println("Not logged in.");
        }
        System.exit(0);
    }

    public static void main(String[] args) {
        new ShiroAuthService().testAuth();
    }
}