我正在使用Delphi(7-2010)并试图找到一种处理异常的好方法,同时释放应用程序的形式.应用程序有几种由Application对象拥有的表单.当用户注销时,我需要释放所有现有表单,以便不维护用户状态,然后显示登录的下一个用户的登录对话框.
有时,尝试释放其中一个表单时会发生异常.这会将表单保留在内存中,但是处于未知/不可用状态,因此我不能将表单重新用于下一个用户,而且我也无法从内存中删除它.因为表单是由应用程序拥有的,所以我无法直接为下一个用户创建表单的新版本,因为它会导致VCL中的"A组件名为MyForm已经存在"错误,我有点厌恶无论如何要在内存中使用旧的表单实例.
我想看看其他人在这种情况下会做些什么.以下是一些想法:
我的 jsp 页面上有一个注销按钮。(Tomcat 8.0.15)
session.invalidate()
Run Code Online (Sandbox Code Playgroud)
或者
request.logout()
Run Code Online (Sandbox Code Playgroud)
哪个更适合退出/终止会话,主要区别是什么?我应该同时使用两者吗?
codeigniter 中的新功能正在学习它并坚持参加 codeigniter 的会话。我正在使用登录系统,登录部分运行良好,但现在我必须添加会话和注销并将我的其他页面包含在该会话中,以便我可以限制某人直接访问该页面。那么我如何在我的代码中实现会话和注销。
这是控制器
<?php
class LoginController extends CI_controller
{
public function index()
{
$this->load->view('header2');
$this->load->view('login');
$this->load->view('footer');
}
public function checklogin()
{
$this->form_validation->set_rules('username' ,'Username', 'required|valid_email');
$this->form_validation->set_rules('password' ,'Password', 'required|callback_verifyUser');
if($this->form_validation->run() == false){
$this->load->view('header2');
$this->load->view('login');
$this->load->view('footer');
}
else
{
redirect('HomeController/index');
}
}
public function verifyUser()
{
$name = $this->input->post('username');
$pass = $this->input->post('password');
$this->load->model('LoginModel');
if($this->LoginModel->login($name, $pass))
{
return true;
}
else
{
$this->form_validation->set_message('verifyUser','Incorrect Email or Pass');
return false;
}
redirect('LoginController/checklogin');
}
}
Run Code Online (Sandbox Code Playgroud)
模型是这样的
<?php
class LoginModel extends CI_model
{
public function login($name, …Run Code Online (Sandbox Code Playgroud) 我按post方法注销并将响应重定向到主页,但要获取主页的 html,我需要使用get方法。
我应该如何正确地从postto重定向get?或者有没有更合适的注销方法?
我为此使用了 Slim v3 框架,它不允许从一种方法重定向到另一种方法。
$app->get('/', function (Request $request, Response $response) {
return $this->renderer->render($response, 'index.phtml');
});
$app->post('/logout', function (Request $request, Response $response) {
return $this->model->logout($response)->withRedirect("/", 308);
});
Run Code Online (Sandbox Code Playgroud)
据我所知,通过POST方法注销并通过获取 html 页面GET是最佳做法。
我正在一个包含重要数据的私人网站上工作,我想注销任何 10 分钟内没有执行任何操作的用户(例如忘记在后台打开的选项卡)。我该怎么做,只是用计时器运行一个事件侦听器来监听鼠标点击就可以了,还是有其他更好的解决方案?
有没有办法编写Rails方法,它会注销并重定向到自定义页面?我正在使用Devise身份验证gem.
我不希望所有注销都将遵循此重定向,但仅限于调用此方法的位置.
在cakephp2.0中,我有domain.com但是当我退出(url是domain.com/logout)时,它被重定向到domain.com/app/login.我不希望它重定向到domain.com/app/login,而是重定向到domain.com/logout.这些是我在UsersController和AppController中的代码
class AppController extends Controller {
public $helpers = array ('Html', 'Form', 'Js' => array('Jquery'), 'Session');
public $components = array(
'Session',
'Auth' => array(
'loginRedirect' => array('controller' => 'posts', 'action' => 'index'),
'logoutRedirect' => array('controller' => 'users', 'action' => 'login'),
'authorize' => array('Controller') // Added this line
)
);
}
Run Code Online (Sandbox Code Playgroud)
Userscontroller
class UsersController extends AppController {
public $components = array(
'Auth' => array(
'loginRedirect' => array('controller' => 'posts', 'action' => …Run Code Online (Sandbox Code Playgroud) 当我编写每个C++程序时,例如:
#include <iostream>
#include <string>
using namespace std;
int main()
{
int n;
cout << "Tell me where to start: ";
cin >> n;
while (n>0) {
cout << n << "\n";
n = n-1;
}
cout << "FIRE!";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我用G ++编译它,当我运行它时,它运行良好,但是当它完成时它会在程序的最后一个单词之后显示"logout"字样,如下所示:
Tell me where to start: 10
10
9
8
7
6
5
4
3
2
1
FIRE!logout
[Process completed]
Run Code Online (Sandbox Code Playgroud)
为什么?我该如何删除它?
这是我使用 Spring Boot 和 Spring Security 的代码。问题是当我曾经注销(使用Thyemleaf)时,注销对我不起作用。
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter{
@Autowired
private DataSource dataSource;
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.jdbcAuthentication()
.dataSource(dataSource)
.usersByUsernameQuery("select username as principal, password as credentials,active from users where username=?")
.authoritiesByUsernameQuery("select username as principal,roles as role from users_roles where username=?")
.rolePrefix("ROLE_")
.passwordEncoder(new Md5PasswordEncoder());
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.formLogin()
.loginPage("/login");
http
.authorizeRequests()
.antMatchers("/index1").permitAll();
http
.authorizeRequests()
.antMatchers("/user").hasRole("USER")
.and()
.logout();
http
.authorizeRequests()
.antMatchers("/adpage").hasRole("ADMIN");
http
.exceptionHandling().accessDeniedPage("/403"); …Run Code Online (Sandbox Code Playgroud) 在 Symfony 5 上,使用内置的登录系统,在注销后添加确认消息似乎是不可能的。我严格按照官方网站上描述的步骤操作。不幸的是,SecurityController 中的 logout 方法是无用的。我被直接重定向到登录页面。
在这里,您将拥有我的 security.yaml 文件:
security:
encoders:
App\Entity\User:
algorithm: auto
# https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers
providers:
# used to reload user from session & other features (e.g. switch_user)
app_user_provider:
entity:
class: App\Entity\User
property: email
# used to reload user from session & other features (e.g. switch_user)
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
anonymous: lazy
provider: app_user_provider
guard:
authenticators:
- App\Security\LoginFormAuthenticator
logout:
path: logout
target: login
remember_me:
secret: '%kernel.secret%'
lifetime: 604800 # 1 week in seconds …Run Code Online (Sandbox Code Playgroud) 我正在一个网站上在本地服务器上举办比赛。实际上比赛的时间限制是 60 分钟。我想在登录 60 分钟后自动注销每个用户。
我是 django 的初学者,这是我在 django 中的第一个项目。
提前致谢。
我注意到即使用户关闭浏览器标签,我的用户也会保持登录状态.
如果关闭浏览器选项卡,如何自动将其注销?