Да, вы можете сделать это самостоятельно.
Однако эти вещи существуют, поэтому вам не нужно реализовывать это самостоятельно. Они написаны очень умными людьми, они проверены, это работает. Если вы хотите сделать это самостоятельно, вы уверены, что не будете вносить какие-либо ошибки? Вы уверены, что пользователи не смогут обойти логин? (в прошлый раз, когда я видел, как кто-то реализовал это сам, пользователь мог просто обойти проверку URL, перейдя к http://site.com/foo/../foo/bar вместо ввода обычного URL-адреса http://site.com/foo/bar)
Что касается примера использования, например jdbcrealm с Tomcat для базовой HTTP-аутентификации см. здесь .
Вы создаете таблицы и т. Д., Как описано там. В вашем веб-приложении вы создаете файл
META-INF / context.xml, который может выглядеть следующим образом:
<context>
<Realm className="org.apache.catalina.realm.JDBCRealm" debug="99"
driverName="com.mysql.Driver"
connectionURL="jdbc:mysql://localhost/mydb?user=dbuser&password=dbpass"
userTable="users" userNameCol="user_name" userCredCol="user_pass"
userRoleTable="user_roles" roleNameCol="role_name"/>
</context>
В своем WEB-INF / web.xml вы добавляете что-то вроде этого:
<security-constraint>
<web-resource-collection>
<web-resource-name>Entire Application</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>USER</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>MyWebapp Login</realm-name>
</login-config>
(Этот пароль защищает все ваше веб-приложение, вы можете ограничить его, например, только URL-адресами вашего веб-сервиса. Авторизованным пользователям, имеющим роль ПОЛЬЗОВАТЕЛЬ, будет предоставлен доступ.
Добавить пользователя в базу данных с чем-то вроде этого SQL
insert into users values('bob','secretpassword');
insert into roles values('bob','USER');
Затем вы помещаете файл .jar драйвера JDBC в $ CATALINA_HOME / lib /, и все готово.