标签: logout

Storyboard登录屏幕的最佳做法,在注销时处理数据清除

我正在使用Storyboard构建iOS应用程序.根视图控制器是一个标签栏控制器.我正在创建登录/注销过程,它基本上工作正常,但我有一些问题.我需要知道设置这一切的最好方法.

我想完成以下任务:

  1. 首次启动应用程序时显示登录屏幕.登录后,转到选项卡栏控制器的第一个选项卡.
  2. 任何时候他们在此之后启动应用程序,检查他们是否已登录,并直接跳到根选项卡栏控制器的第一个选项卡.
  3. 当他们手动单击注销按钮时,显示登录屏幕,并清除视图控制器中的所有数据.

到目前为止我所做的是将根视图控制器设置为Tab Bar Controller,并为我的Login视图控制器创建了一个自定义segue.在我的Tab Bar Controller类中,我检查它们是否在viewDidAppear方法内登录,然后执行segue:[self performSegueWithIdentifier:@"pushLogin" sender:self];

我还设置了需要执行注销操作的通知: [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(logoutAccount) name:@"logoutAccount" object:nil];

注销后,我清除Keychain中的凭据,运行[self setSelectedIndex:0]并执行segue以再次显示登录视图控制器.

这一切都很好,但我想知道:这个逻辑应该在AppDelegate吗?我还有两个问题:

  • 第一次启动应用程序时,Tab Bar Controller会在执行segue之前短暂显示.我已经尝试过移动代码viewWillAppear但是segue不会那么早.
  • 当他们注销时,所有数据仍然在所有视图控制器中.如果他们登录到新帐户,旧帐户数据仍会显示,直到刷新为止.我需要一种方法在注销时轻松清除它.

我愿意改变它.我已经考虑将登录屏幕设置为根视图控制器,或者在AppDelegate中创建导航控制器来处理所有事情......我只是不确定此时最好的方法是什么.

login clear logout ios uistoryboard

285
推荐指数
8
解决办法
11万
查看次数

javax.faces.application.ViewExpiredException:无法恢复视图

我用容器管理的安全性编写了简单的应用程序.问题是当我登录并打开另一个我注销的页面时,然后我回到第一页,我点击任何链接等或刷新页面我得到这个例外.我想这是正常的(或者可能不是:))因为我退出了会话被破坏了.我该怎么做才能将用户重定向到例如index.xhtml或login.xhtml,并使他免于看到错误页面/消息?

换句话说,如何在我退出后自动将其他页面重定向到索引/登录页面?

这里是:

javax.faces.application.ViewExpiredException: viewId:/index.xhtml - View /index.xhtml could not be restored.
    at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:212)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:110)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215)
    at filter.HttpHttpsFilter.doFilter(HttpHttpsFilter.java:66)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:277)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
    at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:226)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)
    at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
    at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
    at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
    at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
    at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
    at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
    at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
    at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
    at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
    at java.lang.Thread.run(Thread.java:619)
Run Code Online (Sandbox Code Playgroud)

jsf logout jsf-2 viewexpiredexception

170
推荐指数
3
解决办法
24万
查看次数

phpmyadmin在1440秒后退出

在我的本地开发Ubuntu框中,我使用MySQL和phpmyadmin来处理数据库.

每当phpmyadmin闲置1440秒(24分钟)时,会话就会到期.我失去了我的位置,必须登录并重新开始.

我尝试改变$cfg['LoginCookieValidity'] = 3600 * 9;内部,config.inc.php但它仍然在1440秒内超时.

我重新启动了所有内容并清除了浏览器缓存(Firefox历史记录 - >清除最近的历史记录 - >缓存 - >所有内容).

我不确定为什么增加的超时不会生效.我究竟做错了什么?

mysql django timeout phpmyadmin logout

128
推荐指数
14
解决办法
10万
查看次数

注销后阻止用户查看以前访问过的安全页面

我要求最终用户在注销/注销后不能返回受限页面.但目前最终用户可以通过浏览器后退按钮,访问浏览器历史记录或甚至通过在浏览器的地址栏中重新输入URL来实现.

基本上,我希望最终用户在注销后不能以任何方式访问受限制的页面.我怎样才能做到最好?我可以用JavaScript禁用后退按钮吗?

jsp servlets back-button logout browser-history

99
推荐指数
2
解决办法
6万
查看次数

我应该使用什么方法进行登录(身份验证)请求?

我想知道在执行登录请求时我应该使用哪种http方法,为什么?由于此请求在服务器上创建了一个对象(用户会话),我认为它应该是POST,你怎么看?但由于登录请求应该是幂等的,它可能是PUT,不是吗?

对于注销请求,我应该使用DELETE方法吗?

login logout http-method

74
推荐指数
5
解决办法
6万
查看次数

Facebook Oauth退出

我有一个使用Oauth 2与Facebook集成的应用程序.

我可以使用FB进行授权并完美地查询他们的REST和Graph API,但是当我授权使用FB创建活动的浏览器会话时.然后我可以很好地注销我的应用程序,但是与FB的会话仍然存在,因此如果其他人使用浏览器,他们将看到以前的用户FB帐户(除非之前的用户也手动注销了FB).

我要授权的步骤是:

  1. 致电[LINK:graph.facebook.com/oauth/authorize?client_id ...]

如果用户的浏览器还没有活动的FB会话,则此步骤将打开Facebook登录/连接窗口.一旦他们登录到Facebook,他们就会使用代码重定向到我的网站,我可以交换一个oauth令牌.

  1. 使用(1)中的代码调用[LINK:graph.facebook.com/oauth/access_token?client_id ..]

现在我有一个Oauth Token,用户的浏览器登录到我的站点,然后登录到FB.

  1. 我打电话给一堆API来做东西:即[LINK:graph.facebook.com/me?access_token= ..]

让我们说我的用户想要退出我的网站.FB条款和条件要求我执行单点登录,因此当用户退出我的站点时,他们也会退出Facebook.有人认为这有点愚蠢,但我很乐意遵守,如果有任何方法可以实现这一点.

我看到的建议是:

答:我使用Javascript API注销:FB.Connect.logout().好吧,我尝试使用它,但它不起作用,我不确定它究竟是怎么做的,因为我没有在我的网站上以任何方式使用Javascript API.会话不是由Javascript API维护或创建的,所以我不确定它应该如何使它过期.

B.使用[LINK:facebook.com/logout.php].这是由Facebook论坛的管理员提出的.给出的示例与获取FB会话(非oauth)的旧方法有关,所以我认为我不能在我的情况下应用它.

C.使用旧的REST api expireSession或revokeAuthorization.我尝试了这两种方法,虽然它们确实使Oauth令牌过期,但它们不会使浏览器当前使用的会话无效,因此它没有效果,用户也没有注销Facebook.

我真的有点松散的结局,Facebook文档不完整,含糊不清,非常差.论坛上的支持是不存在的,目前我甚至无法登录到facebook论坛,除此之外,他们自己的FB Connect集成甚至不能在论坛本身上运行.不会激发很多信心.

您可以提供任何帮助.德里克

PS.不得不将HTTPS更改为LINK,没有足够的业力来发布可能足够公平的链接.

facebook oauth logout

69
推荐指数
5
解决办法
12万
查看次数

如何使用spring security手动注销用户?

可能答案很简单:如何在spring security中手动注销当前登录的用户?打电话是否足够:

SecurityContextHolder.getContext().getAuthentication().setAuthenticated(false); 
Run Code Online (Sandbox Code Playgroud)

spring spring-security logout

68
推荐指数
5
解决办法
9万
查看次数

为什么Node中的PassportJS不会在注销时删除会话

我无法让我的系统注销PassportJS.似乎正在调用注销路由,但它不会删除会话.如果用户没有以特定路线登录,我希望它返回401.我调用authenticateUser来检查用户是否已登录.

非常感谢!

/******* This in index.js *********/
// setup passport for username & passport authentication
adminToolsSetup.setup(passport);

// admin tool login/logout logic
app.post("/adminTool/login",
    passport.authenticate('local', {
        successRedirect: '/adminTool/index.html',
        failureRedirect: '/',
        failureFlash: false })
);
app.get('/adminTool/logout', adminToolsSetup.authenticateUser, function(req, res){
    console.log("logging out");
    console.log(res.user);
    req.logout();
    res.redirect('/');
});


// ******* This is in adminToolSetup ********
// Setting up user authentication to be using user name and passport as authentication method,
// this function will fetch the user information from the user name, and compare the password …
Run Code Online (Sandbox Code Playgroud)

javascript logout node.js express passport.js

65
推荐指数
7
解决办法
5万
查看次数

http基本身份验证"注销"

存储HTTP基本身份验证凭据直到浏览器关闭,但有没有办法在浏览器关闭之前删除凭据?

我读了一个关于HTTP 401状态代码技巧,但似乎工作不正常(请参阅评论回答).也许trac使用机制就是解决方案.

可以使用JavaScript删除凭据吗?或者结合使用JavaScript和状态401技巧?

javascript http basic-authentication logout

60
推荐指数
3
解决办法
5万
查看次数

ASP.NET Windows身份验证注销

如何在ASP.NET中使用Windows身份验证时注销,如此web.config?

<authentication mode="Windows" />
Run Code Online (Sandbox Code Playgroud)

我已经尝试过以下尝试失败了.它重定向,但不会注销用户.

void logoutButton_Click(object sender, EventArgs e) {
    HttpContext.Current.Session.Clear();
    HttpContext.Current.Session.Abandon();
    ViewState.Clear();
    FormsAuthentication.SignOut();
    Response.Redirect("/");
}
Run Code Online (Sandbox Code Playgroud)

背景资料:

我必须使用Windows身份验证,因为我需要使用Active Directory模拟身份以获取对本地文件的访问权限.而且我无法模仿使用Forms身份验证,因为它HttpContext.Current.User.Identity不会是一个WindowsIdentity. 使用表单身份验证进行模拟

asp.net windows-authentication logout

48
推荐指数
4
解决办法
8万
查看次数